1
+ // Importando Sequelize y elementos necesarios
2
+ const { Model, DataTypes, Sequelize } = require ( 'sequelize' ) ;
3
+
4
+ // Importando nombre de la tabla (Entidad) Users
5
+ const { ORDER_TABLE } = require ( './order.model' ) ;
6
+ // Importando nombre de la tabla (Entidad) Products
7
+ const { PRODUCT_TABLE } = require ( './product.model' ) ;
8
+
9
+ // Definimos nombre de la tablaa (Entidad)
10
+ const ORDER_PRODUCT_TABLE = 'orders_products' ;
11
+
12
+ // Definimos el esquema de la entidad
13
+ const OrderProductSchema = {
14
+ id : {
15
+ allowNull : false ,
16
+ autoIncrement : true ,
17
+ primaryKey : true ,
18
+ type : DataTypes . INTEGER ,
19
+ } ,
20
+ createdAt : {
21
+ allowNull : false ,
22
+ type : DataTypes . DATE ,
23
+ // Nombre con el que se guardara el atributo en la BD (_) por buenas prácticas
24
+ field : 'created_at' ,
25
+ defaultValue : Sequelize . NOW ,
26
+ } ,
27
+ amount : {
28
+ allowNull : false ,
29
+ type : DataTypes . INTEGER ,
30
+ } ,
31
+ // Atriburo para relacionar con la tabla order
32
+ orderId : {
33
+ // Nombre con el que se guardara el atributo en la BD (_) por buenas prácticas
34
+ field : 'order_id' ,
35
+ allowNull : false ,
36
+ type : DataTypes . INTEGER ,
37
+ // Indicamos la tabla a la que va relacionada
38
+ references : {
39
+ model : ORDER_TABLE ,
40
+ // Foreign Key
41
+ key : 'id' ,
42
+ } ,
43
+ onUpdate : 'CASCADE' ,
44
+ onDelete : 'CASCADE' ,
45
+ } ,
46
+ // Atriburo para relacionar con la tabla product
47
+ productId : {
48
+ // Nombre con el que se guardara el atributo en la BD (_) por buenas prácticas
49
+ field : 'product_id' ,
50
+ allowNull : false ,
51
+ type : DataTypes . INTEGER ,
52
+ // Indicamos la tabla a la que va relacionada
53
+ references : {
54
+ model : PRODUCT_TABLE ,
55
+ // Foreign Key
56
+ key : 'id' ,
57
+ } ,
58
+ onUpdate : 'CASCADE' ,
59
+ onDelete : 'CASCADE' ,
60
+ } ,
61
+ } ;
62
+
63
+ // Definimos una clase para nuestra entidad
64
+ class OrderProduct extends Model {
65
+ // Método static es un método que pertenece a la clase y no al objeto
66
+
67
+ // Función para realizar las relaciones
68
+ static associate ( ) { }
69
+
70
+ // Función para realizar la configuración (Recibimos una conexión)
71
+ static config ( sequelize ) {
72
+ return {
73
+ // Conexión que tendra
74
+ sequelize,
75
+ // Nombre de la tabla
76
+ tableName : ORDER_PRODUCT_TABLE ,
77
+ // Nombre del modelo (Clase)
78
+ modelName : 'OrderProduct' ,
79
+ timestamps : false ,
80
+ } ;
81
+ }
82
+ }
83
+
84
+ // Exportamos módulos
85
+ module . exports = {
86
+ ORDER_PRODUCT_TABLE ,
87
+ OrderProductSchema,
88
+ OrderProduct,
89
+ } ;
0 commit comments