1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | 'use strict';
|
7 |
|
8 | const DataSource = require('../index').DataSource;
|
9 | const ds = new DataSource('memory');
|
10 |
|
11 | const Order = ds.createModel('Order', {
|
12 | items: [String],
|
13 | orderDate: Date,
|
14 | qty: Number,
|
15 | });
|
16 |
|
17 | const Customer = ds.createModel('Customer', {
|
18 | name: String,
|
19 | });
|
20 |
|
21 | Order.belongsTo(Customer);
|
22 |
|
23 | let order1, order2, order3;
|
24 |
|
25 | Customer.create({name: 'John'}, function(err, customer) {
|
26 | Order.create({customerId: customer.id, orderDate: new Date(), items: ['Book']}, function(err, order) {
|
27 | order1 = order;
|
28 | order.customer(console.log);
|
29 | order.customer(true, console.log);
|
30 |
|
31 | Customer.create({name: 'Mary'}, function(err, customer2) {
|
32 | order.customer(customer2);
|
33 | order.customer(console.log);
|
34 | });
|
35 | });
|
36 |
|
37 | Order.create({orderDate: new Date(), items: ['Phone']}, function(err, order) {
|
38 | order.customer.create({name: 'Smith'}, function(err, customer2) {
|
39 | console.log(order, customer2);
|
40 | order.save(function(err, order) {
|
41 | order2 = order;
|
42 | });
|
43 | });
|
44 |
|
45 | const customer3 = order.customer.build({name: 'Tom'});
|
46 | console.log('Customer 3', customer3);
|
47 | });
|
48 | });
|
49 |
|
50 | Customer.hasMany(Order, {as: 'orders', foreignKey: 'customerId'});
|
51 |
|
52 | Customer.create({name: 'Ray'}, function(err, customer) {
|
53 | Order.create({customerId: customer.id, qty: 3, orderDate: new Date()}, function(err, order) {
|
54 | order3 = order;
|
55 | customer.orders(console.log);
|
56 | customer.orders.create({orderDate: new Date(), qty: 4}, function(err, order) {
|
57 | console.log(order);
|
58 | Customer.include([customer], 'orders', function(err, results) {
|
59 | console.log('Results: ', results);
|
60 | });
|
61 | customer.orders({where: {qty: 4}}, function(err, results) {
|
62 | console.log('customer.orders', results);
|
63 | });
|
64 | customer.orders.findById(order3.id, console.log);
|
65 | customer.orders.destroy(order3.id, console.log);
|
66 | });
|
67 | });
|
68 | });
|
69 |
|
70 | const Physician = ds.createModel('Physician', {
|
71 | name: String,
|
72 | });
|
73 |
|
74 | const Patient = ds.createModel('Patient', {
|
75 | name: String,
|
76 | });
|
77 |
|
78 | const Appointment = ds.createModel('Appointment', {
|
79 | physicianId: Number,
|
80 | patientId: Number,
|
81 | appointmentDate: Date,
|
82 | });
|
83 |
|
84 | Appointment.belongsTo(Patient);
|
85 | Appointment.belongsTo(Physician);
|
86 |
|
87 | Physician.hasMany(Patient, {through: Appointment});
|
88 | Patient.hasMany(Physician, {through: Appointment});
|
89 |
|
90 | Physician.create({name: 'Dr John'}, function(err, physician1) {
|
91 | Physician.create({name: 'Dr Smith'}, function(err, physician2) {
|
92 | Patient.create({name: 'Mary'}, function(err, patient1) {
|
93 | Patient.create({name: 'Ben'}, function(err, patient2) {
|
94 | Appointment.create(
|
95 | {appointmentDate: new Date(), physicianId: physician1.id, patientId: patient1.id},
|
96 | function(err, appt1) {
|
97 | Appointment.create(
|
98 | {appointmentDate: new Date(), physicianId: physician1.id, patientId: patient2.id},
|
99 | function(err, appt2) {
|
100 | physician1.patients(console.log);
|
101 | physician1.patients({where: {name: 'Mary'}}, console.log);
|
102 | patient1.physicians(console.log);
|
103 |
|
104 |
|
105 | const patient3 = patient1.physicians.build({name: 'Dr X'});
|
106 | console.log('Physician 3: ', patient3, patient3.constructor.modelName);
|
107 |
|
108 |
|
109 | patient1.physicians.create({name: 'Dr X'}, function(err, patient4) {
|
110 | console.log('Physician 4: ', patient4, patient4.constructor.modelName);
|
111 | });
|
112 | },
|
113 | );
|
114 | },
|
115 | );
|
116 | });
|
117 | });
|
118 | });
|
119 | });
|
120 |
|
121 | const Assembly = ds.createModel('Assembly', {
|
122 | name: String,
|
123 | });
|
124 |
|
125 | const Part = ds.createModel('Part', {
|
126 | partNumber: String,
|
127 | });
|
128 |
|
129 | Assembly.hasAndBelongsToMany(Part);
|
130 | Part.hasAndBelongsToMany(Assembly);
|
131 |
|
132 | Assembly.create({name: 'car'}, function(err, assembly) {
|
133 | Part.create({partNumber: 'engine'}, function(err, part) {
|
134 | assembly.parts.add(part, function(err) {
|
135 | assembly.parts(function(err, parts) {
|
136 | console.log('Parts: ', parts);
|
137 | });
|
138 |
|
139 |
|
140 | const part3 = assembly.parts.build({partNumber: 'door'});
|
141 | console.log('Part3: ', part3, part3.constructor.modelName);
|
142 |
|
143 |
|
144 | assembly.parts.create({partNumber: 'door'}, function(err, part4) {
|
145 | console.log('Part4: ', part4, part4.constructor.modelName);
|
146 |
|
147 | Assembly.find({include: 'parts'}, function(err, assemblies) {
|
148 | console.log('Assemblies: ', assemblies);
|
149 | });
|
150 | });
|
151 | });
|
152 | });
|
153 | });
|
154 |
|