@loomcore/api 0.1.106 → 0.1.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +77 -77
- package/dist/__tests__/postgres-test-migrations/postgres-test-schema.js +266 -266
- package/dist/__tests__/postgres.test-database.js +8 -8
- package/dist/controllers/organizations.controller.d.ts +6 -2
- package/dist/controllers/organizations.controller.js +2 -2
- package/dist/databases/migrations/migration-runner.js +21 -21
- package/dist/databases/postgres/commands/postgres-batch-update.command.js +7 -7
- package/dist/databases/postgres/commands/postgres-create-many.command.js +4 -4
- package/dist/databases/postgres/commands/postgres-create.command.js +4 -4
- package/dist/databases/postgres/commands/postgres-full-update-by-id.command.js +13 -13
- package/dist/databases/postgres/commands/postgres-partial-update-by-id.command.js +7 -7
- package/dist/databases/postgres/commands/postgres-update.command.js +7 -7
- package/dist/databases/postgres/migrations/postgres-initial-schema.js +224 -224
- package/dist/databases/postgres/postgres.database.js +17 -17
- package/dist/databases/postgres/utils/build-select-clause.js +26 -9
- package/dist/databases/postgres/utils/does-table-exist.util.js +4 -4
- package/package.json +92 -92
|
@@ -5,22 +5,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
5
5
|
name: '00000000000100_schema-test-entities',
|
|
6
6
|
up: async ({ context: pool }) => {
|
|
7
7
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
8
|
-
await pool.query(`
|
|
9
|
-
CREATE TABLE IF NOT EXISTS "testEntities" (
|
|
10
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
11
|
-
${orgColumnDef}
|
|
12
|
-
"name" VARCHAR(255) NOT NULL,
|
|
13
|
-
"description" TEXT,
|
|
14
|
-
"is_active" BOOLEAN,
|
|
15
|
-
"tags" TEXT[],
|
|
16
|
-
"count" INTEGER,
|
|
17
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
18
|
-
"_createdBy" INTEGER NOT NULL,
|
|
19
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
20
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
21
|
-
"_deleted" TIMESTAMPTZ,
|
|
22
|
-
"_deletedBy" INTEGER
|
|
23
|
-
)
|
|
8
|
+
await pool.query(`
|
|
9
|
+
CREATE TABLE IF NOT EXISTS "testEntities" (
|
|
10
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
11
|
+
${orgColumnDef}
|
|
12
|
+
"name" VARCHAR(255) NOT NULL,
|
|
13
|
+
"description" TEXT,
|
|
14
|
+
"is_active" BOOLEAN,
|
|
15
|
+
"tags" TEXT[],
|
|
16
|
+
"count" INTEGER,
|
|
17
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
18
|
+
"_createdBy" INTEGER NOT NULL,
|
|
19
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
20
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
21
|
+
"_deleted" TIMESTAMPTZ,
|
|
22
|
+
"_deletedBy" INTEGER
|
|
23
|
+
)
|
|
24
24
|
`);
|
|
25
25
|
},
|
|
26
26
|
down: async ({ context: pool }) => {
|
|
@@ -31,12 +31,12 @@ export const getPostgresTestSchema = (config) => {
|
|
|
31
31
|
name: '00000000000101_schema-categories',
|
|
32
32
|
up: async ({ context: pool }) => {
|
|
33
33
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
34
|
-
await pool.query(`
|
|
35
|
-
CREATE TABLE IF NOT EXISTS "categories" (
|
|
36
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
37
|
-
${orgColumnDef}
|
|
38
|
-
"name" VARCHAR(255) NOT NULL
|
|
39
|
-
)
|
|
34
|
+
await pool.query(`
|
|
35
|
+
CREATE TABLE IF NOT EXISTS "categories" (
|
|
36
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
37
|
+
${orgColumnDef}
|
|
38
|
+
"name" VARCHAR(255) NOT NULL
|
|
39
|
+
)
|
|
40
40
|
`);
|
|
41
41
|
},
|
|
42
42
|
down: async ({ context: pool }) => {
|
|
@@ -47,22 +47,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
47
47
|
name: '00000000000102_schema-products',
|
|
48
48
|
up: async ({ context: pool }) => {
|
|
49
49
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
50
|
-
await pool.query(`
|
|
51
|
-
CREATE TABLE IF NOT EXISTS "products" (
|
|
52
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
53
|
-
${orgColumnDef}
|
|
54
|
-
"name" VARCHAR(255) NOT NULL,
|
|
55
|
-
"description" TEXT,
|
|
56
|
-
"internal_number" VARCHAR(255),
|
|
57
|
-
"category_id" INTEGER NOT NULL,
|
|
58
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
59
|
-
"_createdBy" INTEGER NOT NULL,
|
|
60
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
61
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
62
|
-
"_deleted" TIMESTAMPTZ,
|
|
63
|
-
"_deletedBy" INTEGER,
|
|
64
|
-
CONSTRAINT "fk_products_category" FOREIGN KEY ("category_id") REFERENCES "categories"("_id") ON DELETE CASCADE
|
|
65
|
-
)
|
|
50
|
+
await pool.query(`
|
|
51
|
+
CREATE TABLE IF NOT EXISTS "products" (
|
|
52
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
53
|
+
${orgColumnDef}
|
|
54
|
+
"name" VARCHAR(255) NOT NULL,
|
|
55
|
+
"description" TEXT,
|
|
56
|
+
"internal_number" VARCHAR(255),
|
|
57
|
+
"category_id" INTEGER NOT NULL,
|
|
58
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
59
|
+
"_createdBy" INTEGER NOT NULL,
|
|
60
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
61
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
62
|
+
"_deleted" TIMESTAMPTZ,
|
|
63
|
+
"_deletedBy" INTEGER,
|
|
64
|
+
CONSTRAINT "fk_products_category" FOREIGN KEY ("category_id") REFERENCES "categories"("_id") ON DELETE CASCADE
|
|
65
|
+
)
|
|
66
66
|
`);
|
|
67
67
|
},
|
|
68
68
|
down: async ({ context: pool }) => {
|
|
@@ -73,20 +73,20 @@ export const getPostgresTestSchema = (config) => {
|
|
|
73
73
|
name: '00000000000103_schema-test-items',
|
|
74
74
|
up: async ({ context: pool }) => {
|
|
75
75
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
76
|
-
await pool.query(`
|
|
77
|
-
CREATE TABLE IF NOT EXISTS "testItems" (
|
|
78
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
79
|
-
${orgColumnDef}
|
|
80
|
-
"name" VARCHAR(255) NOT NULL,
|
|
81
|
-
"value" INTEGER,
|
|
82
|
-
"event_date" TIMESTAMPTZ,
|
|
83
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
84
|
-
"_createdBy" INTEGER NOT NULL,
|
|
85
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
86
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
87
|
-
"_deleted" TIMESTAMPTZ,
|
|
88
|
-
"_deletedBy" INTEGER
|
|
89
|
-
)
|
|
76
|
+
await pool.query(`
|
|
77
|
+
CREATE TABLE IF NOT EXISTS "testItems" (
|
|
78
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
79
|
+
${orgColumnDef}
|
|
80
|
+
"name" VARCHAR(255) NOT NULL,
|
|
81
|
+
"value" INTEGER,
|
|
82
|
+
"event_date" TIMESTAMPTZ,
|
|
83
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
84
|
+
"_createdBy" INTEGER NOT NULL,
|
|
85
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
86
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
87
|
+
"_deleted" TIMESTAMPTZ,
|
|
88
|
+
"_deletedBy" INTEGER
|
|
89
|
+
)
|
|
90
90
|
`);
|
|
91
91
|
},
|
|
92
92
|
down: async ({ context: pool }) => {
|
|
@@ -97,19 +97,19 @@ export const getPostgresTestSchema = (config) => {
|
|
|
97
97
|
name: '00000000000105_5_schema-agents',
|
|
98
98
|
up: async ({ context: pool }) => {
|
|
99
99
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
100
|
-
await pool.query(`
|
|
101
|
-
CREATE TABLE IF NOT EXISTS "agents" (
|
|
102
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
103
|
-
${orgColumnDef}
|
|
104
|
-
"person_id" INTEGER NOT NULL UNIQUE,
|
|
105
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
106
|
-
"_createdBy" INTEGER NOT NULL,
|
|
107
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
108
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
109
|
-
"_deleted" TIMESTAMPTZ,
|
|
110
|
-
"_deletedBy" INTEGER,
|
|
111
|
-
CONSTRAINT fk_agents_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE
|
|
112
|
-
)
|
|
100
|
+
await pool.query(`
|
|
101
|
+
CREATE TABLE IF NOT EXISTS "agents" (
|
|
102
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
103
|
+
${orgColumnDef}
|
|
104
|
+
"person_id" INTEGER NOT NULL UNIQUE,
|
|
105
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
106
|
+
"_createdBy" INTEGER NOT NULL,
|
|
107
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
108
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
109
|
+
"_deleted" TIMESTAMPTZ,
|
|
110
|
+
"_deletedBy" INTEGER,
|
|
111
|
+
CONSTRAINT fk_agents_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE
|
|
112
|
+
)
|
|
113
113
|
`);
|
|
114
114
|
},
|
|
115
115
|
down: async ({ context: pool }) => {
|
|
@@ -120,22 +120,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
120
120
|
name: '00000000000105_6_schema-clients',
|
|
121
121
|
up: async ({ context: pool }) => {
|
|
122
122
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
123
|
-
await pool.query(`
|
|
124
|
-
CREATE TABLE IF NOT EXISTS "clients" (
|
|
125
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
126
|
-
${orgColumnDef}
|
|
127
|
-
"external_id" VARCHAR UNIQUE,
|
|
128
|
-
"person_id" INTEGER NOT NULL UNIQUE,
|
|
129
|
-
"agent_id" INTEGER,
|
|
130
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
131
|
-
"_createdBy" INTEGER NOT NULL,
|
|
132
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
133
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
134
|
-
"_deleted" TIMESTAMPTZ,
|
|
135
|
-
"_deletedBy" INTEGER,
|
|
136
|
-
CONSTRAINT fk_clients_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
137
|
-
CONSTRAINT fk_clients_agent_id FOREIGN KEY ("agent_id") REFERENCES agents("_id") ON DELETE SET NULL
|
|
138
|
-
)
|
|
123
|
+
await pool.query(`
|
|
124
|
+
CREATE TABLE IF NOT EXISTS "clients" (
|
|
125
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
126
|
+
${orgColumnDef}
|
|
127
|
+
"external_id" VARCHAR UNIQUE,
|
|
128
|
+
"person_id" INTEGER NOT NULL UNIQUE,
|
|
129
|
+
"agent_id" INTEGER,
|
|
130
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
131
|
+
"_createdBy" INTEGER NOT NULL,
|
|
132
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
133
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
134
|
+
"_deleted" TIMESTAMPTZ,
|
|
135
|
+
"_deletedBy" INTEGER,
|
|
136
|
+
CONSTRAINT fk_clients_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
137
|
+
CONSTRAINT fk_clients_agent_id FOREIGN KEY ("agent_id") REFERENCES agents("_id") ON DELETE SET NULL
|
|
138
|
+
)
|
|
139
139
|
`);
|
|
140
140
|
},
|
|
141
141
|
down: async ({ context: pool }) => {
|
|
@@ -146,21 +146,21 @@ export const getPostgresTestSchema = (config) => {
|
|
|
146
146
|
name: '00000000000105_7_schema-policies',
|
|
147
147
|
up: async ({ context: pool }) => {
|
|
148
148
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
149
|
-
await pool.query(`
|
|
150
|
-
CREATE TABLE IF NOT EXISTS "policies" (
|
|
151
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
152
|
-
${orgColumnDef}
|
|
153
|
-
"client_id" INTEGER NOT NULL,
|
|
154
|
-
"amount" NUMERIC NOT NULL,
|
|
155
|
-
"frequency" VARCHAR NOT NULL,
|
|
156
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
157
|
-
"_createdBy" INTEGER NOT NULL,
|
|
158
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
159
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
160
|
-
"_deleted" TIMESTAMPTZ,
|
|
161
|
-
"_deletedBy" INTEGER,
|
|
162
|
-
CONSTRAINT fk_policies_client_id FOREIGN KEY ("client_id") REFERENCES clients("_id") ON DELETE CASCADE
|
|
163
|
-
)
|
|
149
|
+
await pool.query(`
|
|
150
|
+
CREATE TABLE IF NOT EXISTS "policies" (
|
|
151
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
152
|
+
${orgColumnDef}
|
|
153
|
+
"client_id" INTEGER NOT NULL,
|
|
154
|
+
"amount" NUMERIC NOT NULL,
|
|
155
|
+
"frequency" VARCHAR NOT NULL,
|
|
156
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
157
|
+
"_createdBy" INTEGER NOT NULL,
|
|
158
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
159
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
160
|
+
"_deleted" TIMESTAMPTZ,
|
|
161
|
+
"_deletedBy" INTEGER,
|
|
162
|
+
CONSTRAINT fk_policies_client_id FOREIGN KEY ("client_id") REFERENCES clients("_id") ON DELETE CASCADE
|
|
163
|
+
)
|
|
164
164
|
`);
|
|
165
165
|
},
|
|
166
166
|
down: async ({ context: pool }) => {
|
|
@@ -171,22 +171,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
171
171
|
name: '00000000000105_8_schema-agents-policies',
|
|
172
172
|
up: async ({ context: pool }) => {
|
|
173
173
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
174
|
-
await pool.query(`
|
|
175
|
-
CREATE TABLE IF NOT EXISTS agents_policies (
|
|
176
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
177
|
-
${orgColumnDef}
|
|
178
|
-
"policy_id" INTEGER NOT NULL,
|
|
179
|
-
"agent_id" INTEGER NOT NULL,
|
|
180
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
181
|
-
"_createdBy" INTEGER NOT NULL,
|
|
182
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
183
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
184
|
-
"_deleted" TIMESTAMPTZ,
|
|
185
|
-
"_deletedBy" INTEGER,
|
|
186
|
-
CONSTRAINT fk_agents_policies_policy_id FOREIGN KEY ("policy_id") REFERENCES policies("_id") ON DELETE CASCADE,
|
|
187
|
-
CONSTRAINT fk_agents_policies_agent_id FOREIGN KEY ("agent_id") REFERENCES agents("_id") ON DELETE CASCADE,
|
|
188
|
-
CONSTRAINT uk_agents_policies_policy_agent UNIQUE ("policy_id", "agent_id")
|
|
189
|
-
)
|
|
174
|
+
await pool.query(`
|
|
175
|
+
CREATE TABLE IF NOT EXISTS agents_policies (
|
|
176
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
177
|
+
${orgColumnDef}
|
|
178
|
+
"policy_id" INTEGER NOT NULL,
|
|
179
|
+
"agent_id" INTEGER NOT NULL,
|
|
180
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
181
|
+
"_createdBy" INTEGER NOT NULL,
|
|
182
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
183
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
184
|
+
"_deleted" TIMESTAMPTZ,
|
|
185
|
+
"_deletedBy" INTEGER,
|
|
186
|
+
CONSTRAINT fk_agents_policies_policy_id FOREIGN KEY ("policy_id") REFERENCES policies("_id") ON DELETE CASCADE,
|
|
187
|
+
CONSTRAINT fk_agents_policies_agent_id FOREIGN KEY ("agent_id") REFERENCES agents("_id") ON DELETE CASCADE,
|
|
188
|
+
CONSTRAINT uk_agents_policies_policy_agent UNIQUE ("policy_id", "agent_id")
|
|
189
|
+
)
|
|
190
190
|
`);
|
|
191
191
|
},
|
|
192
192
|
down: async ({ context: pool }) => {
|
|
@@ -197,21 +197,21 @@ export const getPostgresTestSchema = (config) => {
|
|
|
197
197
|
name: '00000000000105_9_schema-premiums',
|
|
198
198
|
up: async ({ context: pool }) => {
|
|
199
199
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
200
|
-
await pool.query(`
|
|
201
|
-
CREATE TABLE IF NOT EXISTS "premiums" (
|
|
202
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
203
|
-
${orgColumnDef}
|
|
204
|
-
"policy_id" INTEGER NOT NULL,
|
|
205
|
-
"amount" NUMERIC NOT NULL,
|
|
206
|
-
"date" DATE NOT NULL,
|
|
207
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
208
|
-
"_createdBy" INTEGER NOT NULL,
|
|
209
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
210
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
211
|
-
"_deleted" TIMESTAMPTZ,
|
|
212
|
-
"_deletedBy" INTEGER,
|
|
213
|
-
CONSTRAINT fk_premiums_policy_id FOREIGN KEY ("policy_id") REFERENCES policies("_id") ON DELETE CASCADE
|
|
214
|
-
)
|
|
200
|
+
await pool.query(`
|
|
201
|
+
CREATE TABLE IF NOT EXISTS "premiums" (
|
|
202
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
203
|
+
${orgColumnDef}
|
|
204
|
+
"policy_id" INTEGER NOT NULL,
|
|
205
|
+
"amount" NUMERIC NOT NULL,
|
|
206
|
+
"date" DATE NOT NULL,
|
|
207
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
208
|
+
"_createdBy" INTEGER NOT NULL,
|
|
209
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
210
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
211
|
+
"_deleted" TIMESTAMPTZ,
|
|
212
|
+
"_deletedBy" INTEGER,
|
|
213
|
+
CONSTRAINT fk_premiums_policy_id FOREIGN KEY ("policy_id") REFERENCES policies("_id") ON DELETE CASCADE
|
|
214
|
+
)
|
|
215
215
|
`);
|
|
216
216
|
},
|
|
217
217
|
down: async ({ context: pool }) => {
|
|
@@ -222,23 +222,23 @@ export const getPostgresTestSchema = (config) => {
|
|
|
222
222
|
name: '00000000000106_schema-email-addresses',
|
|
223
223
|
up: async ({ context: pool }) => {
|
|
224
224
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
225
|
-
await pool.query(`
|
|
226
|
-
CREATE TABLE IF NOT EXISTS email_addresses (
|
|
227
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
228
|
-
${orgColumnDef}
|
|
229
|
-
"person_id" INTEGER NOT NULL,
|
|
230
|
-
"external_id" VARCHAR UNIQUE,
|
|
231
|
-
"email_address" VARCHAR NOT NULL UNIQUE,
|
|
232
|
-
"email_address_type" VARCHAR,
|
|
233
|
-
"is_default" BOOLEAN NOT NULL,
|
|
234
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
235
|
-
"_createdBy" INTEGER NOT NULL,
|
|
236
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
237
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
238
|
-
"_deleted" TIMESTAMPTZ,
|
|
239
|
-
"_deletedBy" INTEGER,
|
|
240
|
-
CONSTRAINT fk_email_addresses_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE
|
|
241
|
-
)
|
|
225
|
+
await pool.query(`
|
|
226
|
+
CREATE TABLE IF NOT EXISTS email_addresses (
|
|
227
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
228
|
+
${orgColumnDef}
|
|
229
|
+
"person_id" INTEGER NOT NULL,
|
|
230
|
+
"external_id" VARCHAR UNIQUE,
|
|
231
|
+
"email_address" VARCHAR NOT NULL UNIQUE,
|
|
232
|
+
"email_address_type" VARCHAR,
|
|
233
|
+
"is_default" BOOLEAN NOT NULL,
|
|
234
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
235
|
+
"_createdBy" INTEGER NOT NULL,
|
|
236
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
237
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
238
|
+
"_deleted" TIMESTAMPTZ,
|
|
239
|
+
"_deletedBy" INTEGER,
|
|
240
|
+
CONSTRAINT fk_email_addresses_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE
|
|
241
|
+
)
|
|
242
242
|
`);
|
|
243
243
|
},
|
|
244
244
|
down: async ({ context: pool }) => {
|
|
@@ -249,21 +249,21 @@ export const getPostgresTestSchema = (config) => {
|
|
|
249
249
|
name: '00000000000107_schema-phone-numbers',
|
|
250
250
|
up: async ({ context: pool }) => {
|
|
251
251
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
252
|
-
await pool.query(`
|
|
253
|
-
CREATE TABLE IF NOT EXISTS phone_numbers (
|
|
254
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
255
|
-
"_orgId" INTEGER,
|
|
256
|
-
"external_id" VARCHAR UNIQUE,
|
|
257
|
-
"phone_number" VARCHAR NOT NULL UNIQUE,
|
|
258
|
-
"phone_number_type" VARCHAR,
|
|
259
|
-
"is_default" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
260
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
261
|
-
"_createdBy" INTEGER NOT NULL,
|
|
262
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
263
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
264
|
-
"_deleted" TIMESTAMPTZ,
|
|
265
|
-
"_deletedBy" INTEGER
|
|
266
|
-
)
|
|
252
|
+
await pool.query(`
|
|
253
|
+
CREATE TABLE IF NOT EXISTS phone_numbers (
|
|
254
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
255
|
+
"_orgId" INTEGER,
|
|
256
|
+
"external_id" VARCHAR UNIQUE,
|
|
257
|
+
"phone_number" VARCHAR NOT NULL UNIQUE,
|
|
258
|
+
"phone_number_type" VARCHAR,
|
|
259
|
+
"is_default" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
260
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
261
|
+
"_createdBy" INTEGER NOT NULL,
|
|
262
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
263
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
264
|
+
"_deleted" TIMESTAMPTZ,
|
|
265
|
+
"_deletedBy" INTEGER
|
|
266
|
+
)
|
|
267
267
|
`);
|
|
268
268
|
},
|
|
269
269
|
down: async ({ context: pool }) => {
|
|
@@ -274,25 +274,25 @@ export const getPostgresTestSchema = (config) => {
|
|
|
274
274
|
name: '00000000000108_schema-addresses',
|
|
275
275
|
up: async ({ context: pool }) => {
|
|
276
276
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
277
|
-
await pool.query(`
|
|
278
|
-
CREATE TABLE IF NOT EXISTS addresses (
|
|
279
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
280
|
-
${orgColumnDef}
|
|
281
|
-
"external_id" VARCHAR UNIQUE,
|
|
282
|
-
"address_type" VARCHAR NOT NULL,
|
|
283
|
-
"address_line_1" VARCHAR NOT NULL,
|
|
284
|
-
"address_line_2" VARCHAR,
|
|
285
|
-
"city" VARCHAR NOT NULL,
|
|
286
|
-
"state" VARCHAR NOT NULL,
|
|
287
|
-
"zip_code" VARCHAR NOT NULL,
|
|
288
|
-
"country" VARCHAR NOT NULL,
|
|
289
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
290
|
-
"_createdBy" INTEGER NOT NULL,
|
|
291
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
292
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
293
|
-
"_deleted" TIMESTAMPTZ,
|
|
294
|
-
"_deletedBy" INTEGER
|
|
295
|
-
)
|
|
277
|
+
await pool.query(`
|
|
278
|
+
CREATE TABLE IF NOT EXISTS addresses (
|
|
279
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
280
|
+
${orgColumnDef}
|
|
281
|
+
"external_id" VARCHAR UNIQUE,
|
|
282
|
+
"address_type" VARCHAR NOT NULL,
|
|
283
|
+
"address_line_1" VARCHAR NOT NULL,
|
|
284
|
+
"address_line_2" VARCHAR,
|
|
285
|
+
"city" VARCHAR NOT NULL,
|
|
286
|
+
"state" VARCHAR NOT NULL,
|
|
287
|
+
"zip_code" VARCHAR NOT NULL,
|
|
288
|
+
"country" VARCHAR NOT NULL,
|
|
289
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
290
|
+
"_createdBy" INTEGER NOT NULL,
|
|
291
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
292
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
293
|
+
"_deleted" TIMESTAMPTZ,
|
|
294
|
+
"_deletedBy" INTEGER
|
|
295
|
+
)
|
|
296
296
|
`);
|
|
297
297
|
},
|
|
298
298
|
down: async ({ context: pool }) => {
|
|
@@ -303,22 +303,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
303
303
|
name: '00000000000109_schema-person-addresses',
|
|
304
304
|
up: async ({ context: pool }) => {
|
|
305
305
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
306
|
-
await pool.query(`
|
|
307
|
-
CREATE TABLE IF NOT EXISTS persons_addresses (
|
|
308
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
309
|
-
${orgColumnDef}
|
|
310
|
-
"address_id" INTEGER NOT NULL,
|
|
311
|
-
"person_id" INTEGER NOT NULL,
|
|
312
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
313
|
-
"_createdBy" INTEGER NOT NULL,
|
|
314
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
315
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
316
|
-
"_deleted" TIMESTAMPTZ,
|
|
317
|
-
"_deletedBy" INTEGER,
|
|
318
|
-
CONSTRAINT fk_persons_addresses_address_id FOREIGN KEY ("address_id") REFERENCES addresses("_id") ON DELETE CASCADE,
|
|
319
|
-
CONSTRAINT fk_persons_addresses_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
320
|
-
CONSTRAINT uk_persons_addresses_address_person UNIQUE ("address_id", "person_id")
|
|
321
|
-
)
|
|
306
|
+
await pool.query(`
|
|
307
|
+
CREATE TABLE IF NOT EXISTS persons_addresses (
|
|
308
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
309
|
+
${orgColumnDef}
|
|
310
|
+
"address_id" INTEGER NOT NULL,
|
|
311
|
+
"person_id" INTEGER NOT NULL,
|
|
312
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
313
|
+
"_createdBy" INTEGER NOT NULL,
|
|
314
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
315
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
316
|
+
"_deleted" TIMESTAMPTZ,
|
|
317
|
+
"_deletedBy" INTEGER,
|
|
318
|
+
CONSTRAINT fk_persons_addresses_address_id FOREIGN KEY ("address_id") REFERENCES addresses("_id") ON DELETE CASCADE,
|
|
319
|
+
CONSTRAINT fk_persons_addresses_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
320
|
+
CONSTRAINT uk_persons_addresses_address_person UNIQUE ("address_id", "person_id")
|
|
321
|
+
)
|
|
322
322
|
`);
|
|
323
323
|
},
|
|
324
324
|
down: async ({ context: pool }) => {
|
|
@@ -329,22 +329,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
329
329
|
name: '00000000000110_schema-person-phone-numbers',
|
|
330
330
|
up: async ({ context: pool }) => {
|
|
331
331
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
332
|
-
await pool.query(`
|
|
333
|
-
CREATE TABLE IF NOT EXISTS persons_phone_numbers (
|
|
334
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
335
|
-
${orgColumnDef}
|
|
336
|
-
"phone_number_id" INTEGER NOT NULL,
|
|
337
|
-
"person_id" INTEGER NOT NULL,
|
|
338
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
339
|
-
"_createdBy" INTEGER NOT NULL,
|
|
340
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
341
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
342
|
-
"_deleted" TIMESTAMPTZ,
|
|
343
|
-
"_deletedBy" INTEGER,
|
|
344
|
-
CONSTRAINT fk_persons_phone_numbers_phone_number_id FOREIGN KEY ("phone_number_id") REFERENCES phone_numbers("_id") ON DELETE CASCADE,
|
|
345
|
-
CONSTRAINT fk_persons_phone_numbers_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
346
|
-
CONSTRAINT uk_persons_phone_numbers_phone_number_person UNIQUE ("phone_number_id", "person_id")
|
|
347
|
-
)
|
|
332
|
+
await pool.query(`
|
|
333
|
+
CREATE TABLE IF NOT EXISTS persons_phone_numbers (
|
|
334
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
335
|
+
${orgColumnDef}
|
|
336
|
+
"phone_number_id" INTEGER NOT NULL,
|
|
337
|
+
"person_id" INTEGER NOT NULL,
|
|
338
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
339
|
+
"_createdBy" INTEGER NOT NULL,
|
|
340
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
341
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
342
|
+
"_deleted" TIMESTAMPTZ,
|
|
343
|
+
"_deletedBy" INTEGER,
|
|
344
|
+
CONSTRAINT fk_persons_phone_numbers_phone_number_id FOREIGN KEY ("phone_number_id") REFERENCES phone_numbers("_id") ON DELETE CASCADE,
|
|
345
|
+
CONSTRAINT fk_persons_phone_numbers_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
346
|
+
CONSTRAINT uk_persons_phone_numbers_phone_number_person UNIQUE ("phone_number_id", "person_id")
|
|
347
|
+
)
|
|
348
348
|
`);
|
|
349
349
|
},
|
|
350
350
|
down: async ({ context: pool }) => {
|
|
@@ -355,18 +355,18 @@ export const getPostgresTestSchema = (config) => {
|
|
|
355
355
|
name: '00000000000111_schema-states',
|
|
356
356
|
up: async ({ context: pool }) => {
|
|
357
357
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
358
|
-
await pool.query(`
|
|
359
|
-
CREATE TABLE IF NOT EXISTS states (
|
|
360
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
361
|
-
${orgColumnDef}
|
|
362
|
-
"name" VARCHAR NOT NULL,
|
|
363
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
364
|
-
"_createdBy" INTEGER NOT NULL,
|
|
365
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
366
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
367
|
-
"_deleted" TIMESTAMPTZ,
|
|
368
|
-
"_deletedBy" INTEGER
|
|
369
|
-
)
|
|
358
|
+
await pool.query(`
|
|
359
|
+
CREATE TABLE IF NOT EXISTS states (
|
|
360
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
361
|
+
${orgColumnDef}
|
|
362
|
+
"name" VARCHAR NOT NULL,
|
|
363
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
364
|
+
"_createdBy" INTEGER NOT NULL,
|
|
365
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
366
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
367
|
+
"_deleted" TIMESTAMPTZ,
|
|
368
|
+
"_deletedBy" INTEGER
|
|
369
|
+
)
|
|
370
370
|
`);
|
|
371
371
|
},
|
|
372
372
|
down: async ({ context: pool }) => {
|
|
@@ -377,20 +377,20 @@ export const getPostgresTestSchema = (config) => {
|
|
|
377
377
|
name: '00000000000112_schema-districts',
|
|
378
378
|
up: async ({ context: pool }) => {
|
|
379
379
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
380
|
-
await pool.query(`
|
|
381
|
-
CREATE TABLE IF NOT EXISTS districts (
|
|
382
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
383
|
-
${orgColumnDef}
|
|
384
|
-
"name" VARCHAR NOT NULL,
|
|
385
|
-
"state_id" INTEGER NOT NULL,
|
|
386
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
387
|
-
"_createdBy" INTEGER NOT NULL,
|
|
388
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
389
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
390
|
-
"_deleted" TIMESTAMPTZ,
|
|
391
|
-
"_deletedBy" INTEGER,
|
|
392
|
-
CONSTRAINT fk_districts_state_id FOREIGN KEY ("state_id") REFERENCES states("_id") ON DELETE CASCADE
|
|
393
|
-
)
|
|
380
|
+
await pool.query(`
|
|
381
|
+
CREATE TABLE IF NOT EXISTS districts (
|
|
382
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
383
|
+
${orgColumnDef}
|
|
384
|
+
"name" VARCHAR NOT NULL,
|
|
385
|
+
"state_id" INTEGER NOT NULL,
|
|
386
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
387
|
+
"_createdBy" INTEGER NOT NULL,
|
|
388
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
389
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
390
|
+
"_deleted" TIMESTAMPTZ,
|
|
391
|
+
"_deletedBy" INTEGER,
|
|
392
|
+
CONSTRAINT fk_districts_state_id FOREIGN KEY ("state_id") REFERENCES states("_id") ON DELETE CASCADE
|
|
393
|
+
)
|
|
394
394
|
`);
|
|
395
395
|
},
|
|
396
396
|
down: async ({ context: pool }) => {
|
|
@@ -401,20 +401,20 @@ export const getPostgresTestSchema = (config) => {
|
|
|
401
401
|
name: '00000000000113_schema-schools',
|
|
402
402
|
up: async ({ context: pool }) => {
|
|
403
403
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
404
|
-
await pool.query(`
|
|
405
|
-
CREATE TABLE IF NOT EXISTS schools (
|
|
406
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
407
|
-
${orgColumnDef}
|
|
408
|
-
"name" VARCHAR NOT NULL,
|
|
409
|
-
"district_id" INTEGER NOT NULL,
|
|
410
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
411
|
-
"_createdBy" INTEGER NOT NULL,
|
|
412
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
413
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
414
|
-
"_deleted" TIMESTAMPTZ,
|
|
415
|
-
"_deletedBy" INTEGER,
|
|
416
|
-
CONSTRAINT fk_schools_district_id FOREIGN KEY ("district_id") REFERENCES districts("_id") ON DELETE CASCADE
|
|
417
|
-
)
|
|
404
|
+
await pool.query(`
|
|
405
|
+
CREATE TABLE IF NOT EXISTS schools (
|
|
406
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
407
|
+
${orgColumnDef}
|
|
408
|
+
"name" VARCHAR NOT NULL,
|
|
409
|
+
"district_id" INTEGER NOT NULL,
|
|
410
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
411
|
+
"_createdBy" INTEGER NOT NULL,
|
|
412
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
413
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
414
|
+
"_deleted" TIMESTAMPTZ,
|
|
415
|
+
"_deletedBy" INTEGER,
|
|
416
|
+
CONSTRAINT fk_schools_district_id FOREIGN KEY ("district_id") REFERENCES districts("_id") ON DELETE CASCADE
|
|
417
|
+
)
|
|
418
418
|
`);
|
|
419
419
|
},
|
|
420
420
|
down: async ({ context: pool }) => {
|
|
@@ -425,22 +425,22 @@ export const getPostgresTestSchema = (config) => {
|
|
|
425
425
|
name: '00000000000114_schema-person-schools',
|
|
426
426
|
up: async ({ context: pool }) => {
|
|
427
427
|
const orgColumnDef = isMultiTenant ? '"_orgId" INTEGER,' : '';
|
|
428
|
-
await pool.query(`
|
|
429
|
-
CREATE TABLE IF NOT EXISTS persons_schools (
|
|
430
|
-
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
431
|
-
${orgColumnDef}
|
|
432
|
-
"person_id" INTEGER NOT NULL,
|
|
433
|
-
"school_id" INTEGER NOT NULL,
|
|
434
|
-
"_created" TIMESTAMPTZ NOT NULL,
|
|
435
|
-
"_createdBy" INTEGER NOT NULL,
|
|
436
|
-
"_updated" TIMESTAMPTZ NOT NULL,
|
|
437
|
-
"_updatedBy" INTEGER NOT NULL,
|
|
438
|
-
"_deleted" TIMESTAMPTZ,
|
|
439
|
-
"_deletedBy" INTEGER,
|
|
440
|
-
CONSTRAINT fk_persons_schools_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
441
|
-
CONSTRAINT fk_persons_schools_school_id FOREIGN KEY ("school_id") REFERENCES schools("_id") ON DELETE CASCADE,
|
|
442
|
-
CONSTRAINT uk_persons_schools_person_school UNIQUE ("person_id", "school_id")
|
|
443
|
-
)
|
|
428
|
+
await pool.query(`
|
|
429
|
+
CREATE TABLE IF NOT EXISTS persons_schools (
|
|
430
|
+
"_id" INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
431
|
+
${orgColumnDef}
|
|
432
|
+
"person_id" INTEGER NOT NULL,
|
|
433
|
+
"school_id" INTEGER NOT NULL,
|
|
434
|
+
"_created" TIMESTAMPTZ NOT NULL,
|
|
435
|
+
"_createdBy" INTEGER NOT NULL,
|
|
436
|
+
"_updated" TIMESTAMPTZ NOT NULL,
|
|
437
|
+
"_updatedBy" INTEGER NOT NULL,
|
|
438
|
+
"_deleted" TIMESTAMPTZ,
|
|
439
|
+
"_deletedBy" INTEGER,
|
|
440
|
+
CONSTRAINT fk_persons_schools_person_id FOREIGN KEY ("person_id") REFERENCES persons("_id") ON DELETE CASCADE,
|
|
441
|
+
CONSTRAINT fk_persons_schools_school_id FOREIGN KEY ("school_id") REFERENCES schools("_id") ON DELETE CASCADE,
|
|
442
|
+
CONSTRAINT uk_persons_schools_person_school UNIQUE ("person_id", "school_id")
|
|
443
|
+
)
|
|
444
444
|
`);
|
|
445
445
|
},
|
|
446
446
|
down: async ({ context: pool }) => {
|