src/Store/Model/Relation.ts   A
last analyzed

Complexity

Total Complexity 5
Complexity/F 2.5

Size

Lines of Code 38
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 28
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 5
mnd 3
bc 3
fnc 2
bpm 1.5
cpm 2.5
noi 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A Relation.getRelationalFields 0 3 4
A Relation.tableSetup 0 3 1
1
import Field from "./Field";
2
import ForeignKey from "./Field/ForeignKey";
3
import {ModelStaticInterface, TableInterface} from "../../JeloquentInterfaces";
4
5
/**
6
 *
7
 */
8
export default class Relation extends Field {
9
10
    foreignKey: string;
11
12
    model: ModelStaticInterface;
13
14
    constructor(model: ModelStaticInterface, foreignKey: string = null, name: string = null) {
15
        const className = name ?? model.snakeCaseClassName;
16
        super(className);
17
        this.model = model;
18
        this.foreignKey = foreignKey;
19
    }
20
21
    set _value(value: Record<string, unknown>|Record<string, unknown>[]) {
22
        if (!Array.isArray(value)) {
23
            value = [value];
24
        }
25
26
        value.forEach((modelValue) => {
27
            this.model.insert(modelValue);
28
        });
29
    }
30
31
    getRelationalFields(): ForeignKey[] {
32
        return [new ForeignKey(this.foreignKey).setRelation(this)];
33
    }
34
35
    tableSetup(table: TableInterface): void {
36
        table.registerIndex(this.foreignKey);
37
    }
38
}