У меня есть модель уведомлений, которая имеет два отношения к себе и другое отношение с моделью агента.
Я хочу создать (вручную) JSON данные, соответствующие этой модели, чтобы вставить их в таблица NOTIFICATION.
Вот моя модель уведомления.
import { Model } from 'objection';
import Agent from './Agent';
import Traduction from './Traduction';
export default class Notification extends Model {
static get tableName() {
return 'NOTIFICATION';
}
readonly id!: number;
id_agent: number;
id_parent?: number;
parent_titre: string;
code_titre: string;
nombre?: number;
Agent?: Agent;
Parent?: Notification;
Child?: Notification[];
static get relationMappings() {
return {
Agent: {
modelClass: Agent,
relation: Model.HasOneRelation,
join: {
from: 'NOTIFICATION.id',
to: 'AGENT.id'
}
},
Parent: {
modelClass: Notification,
relation: Model.HasOneRelation,
join: {
from: 'NOTIFICATION.id_parent',
to: 'NOTIFICATION.id'
}
},
Child: {
modelClass: Notification,
relation: Model.HasManyRelation,
join: {
from: 'NOTIFICATION.id',
to: 'NOTIFICATION.id_parent'
}
}
};
}
}
Вот у меня модель агента:
import Individu from '../Personne/Individu';
import { Model } from 'objection';
import MembreService from './MembreService';
export default class Agent extends Model {
static get tableName() {
return 'AGENT';
}
readonly id!: number;
utilisateur: boolean = false;
login?: string;
password?: string;
periode_debut?: Date;
periode_fin?: Date;
actif: boolean = true;
token?: string;
id_individu: number;
Individu?: Individu;
MembreServices?: MembreService[];
static get relationMappings() {
return {
Individu: {
modelClass: Individu,
relation: Model.BelongsToOneRelation,
join: {
from: 'AGENT.id',
to: 'INDIVIDU.id'
}
},
MembreServices: {
modelClass: MembreService,
relation: Model.HasManyRelation,
join: {
from: 'AGENT.id',
to: 'MEMBRE_SERVICE.id_agent'
}
}
};
}
}
А вот код, создающий таблицу NOTIFICATION .
knex.schema.hasTable('NOTIFICATION').then(function(exists) {
if (!exists) {
return knex.schema.createTable('NOTIFICATION', table => {
table.bigIncrements('id').primary();
table.bigInteger('id_agent').unsigned().notNullable().references('id').inTable('AGENT');
table.bigInteger('id_parent').unsigned().references('id').inTable('NOTIFICATION');
table.string('parent_titre', 45).notNullable();
table.string('code_titre', 45).notNullable();
table.integer('nombre').nullable();
});
}
});
}