nsa-sheets-db-builder 4.0.0

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.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +188 -0
  3. package/bin/sheets-deployer.mjs +169 -0
  4. package/libs/alasql.js +15577 -0
  5. package/libs/common/gas_response_helper.ts +147 -0
  6. package/libs/common/gaserror.ts +101 -0
  7. package/libs/common/gaslogger.ts +172 -0
  8. package/libs/db_ddl.ts +316 -0
  9. package/libs/libraries.json +56 -0
  10. package/libs/spreadsheets_db.ts +4406 -0
  11. package/libs/triggers.ts +113 -0
  12. package/package.json +73 -0
  13. package/scripts/build.mjs +513 -0
  14. package/scripts/clean.mjs +31 -0
  15. package/scripts/create.mjs +94 -0
  16. package/scripts/ddl-handler.mjs +232 -0
  17. package/scripts/describe.mjs +38 -0
  18. package/scripts/drop.mjs +39 -0
  19. package/scripts/init.mjs +465 -0
  20. package/scripts/lib/utils.mjs +1019 -0
  21. package/scripts/login.mjs +102 -0
  22. package/scripts/provision.mjs +35 -0
  23. package/scripts/refresh-cache.mjs +34 -0
  24. package/scripts/set-key.mjs +48 -0
  25. package/scripts/setup-trigger.mjs +95 -0
  26. package/scripts/setup.mjs +677 -0
  27. package/scripts/show.mjs +37 -0
  28. package/scripts/sync.mjs +35 -0
  29. package/scripts/whoami.mjs +36 -0
  30. package/src/api/ddl-handler-entry.ts +136 -0
  31. package/src/api/ddl.ts +321 -0
  32. package/src/templates/.clasp.json.ejs +1 -0
  33. package/src/templates/appsscript.json.ejs +16 -0
  34. package/src/templates/config.ts.ejs +14 -0
  35. package/src/templates/ddl-handler-config.ts.ejs +3 -0
  36. package/src/templates/ddl-handler-main.ts.ejs +56 -0
  37. package/src/templates/main.ts.ejs +288 -0
  38. package/src/templates/rbac.ts.ejs +148 -0
  39. package/src/templates/views.ts.ejs +92 -0
  40. package/templates/blank.json +33 -0
  41. package/templates/blog-cms.json +507 -0
  42. package/templates/crm.json +360 -0
  43. package/templates/e-commerce.json +424 -0
  44. package/templates/inventory.json +307 -0
@@ -0,0 +1,507 @@
1
+ {
2
+ "name": "blog-cms",
3
+ "description": "CMS — pages, collections, collection fields, entries, authors, categories, tags, media, navigations, settings",
4
+ "tables": {
5
+ "pages": {
6
+ "spreadsheetId": "__new__",
7
+ "sheetName": "pages",
8
+ "schema": {
9
+ "id": {
10
+ "type": "string",
11
+ "primaryKey": true,
12
+ "required": true
13
+ },
14
+ "title": {
15
+ "type": "string",
16
+ "required": true
17
+ },
18
+ "slug": {
19
+ "type": "string",
20
+ "required": true
21
+ },
22
+ "body": {
23
+ "type": "string",
24
+ "prefixed": true
25
+ },
26
+ "status": {
27
+ "type": "string",
28
+ "required": true,
29
+ "defaultValue": "draft"
30
+ },
31
+ "parent_id": {
32
+ "type": "string",
33
+ "foreignKey": "pages.id"
34
+ },
35
+ "sort_order": {
36
+ "type": "number",
37
+ "defaultValue": 0
38
+ },
39
+ "meta_title": {
40
+ "type": "string"
41
+ },
42
+ "meta_description": {
43
+ "type": "string"
44
+ },
45
+ "__audit__": {
46
+ "type": "object"
47
+ },
48
+ "__archived__": {
49
+ "type": "boolean",
50
+ "defaultValue": false
51
+ }
52
+ },
53
+ "idGenerator": "UUID",
54
+ "deleteMode": "soft"
55
+ },
56
+ "collections": {
57
+ "spreadsheetId": "__new__",
58
+ "sheetName": "collections",
59
+ "schema": {
60
+ "id": {
61
+ "type": "string",
62
+ "primaryKey": true,
63
+ "required": true
64
+ },
65
+ "name": {
66
+ "type": "string",
67
+ "required": true
68
+ },
69
+ "slug": {
70
+ "type": "string",
71
+ "required": true
72
+ },
73
+ "description": {
74
+ "type": "string"
75
+ },
76
+ "__audit__": {
77
+ "type": "object"
78
+ },
79
+ "__archived__": {
80
+ "type": "boolean",
81
+ "defaultValue": false
82
+ }
83
+ },
84
+ "idGenerator": "UUID",
85
+ "deleteMode": "soft"
86
+ },
87
+ "collection_fields": {
88
+ "spreadsheetId": "__new__",
89
+ "sheetName": "collection_fields",
90
+ "schema": {
91
+ "id": {
92
+ "type": "string",
93
+ "primaryKey": true,
94
+ "required": true
95
+ },
96
+ "collection_id": {
97
+ "type": "string",
98
+ "required": true,
99
+ "foreignKey": "collections.id"
100
+ },
101
+ "field_name": {
102
+ "type": "string",
103
+ "required": true
104
+ },
105
+ "field_type": {
106
+ "type": "string",
107
+ "required": true,
108
+ "defaultValue": "string"
109
+ },
110
+ "required": {
111
+ "type": "boolean",
112
+ "defaultValue": false
113
+ },
114
+ "help_text": {
115
+ "type": "string"
116
+ },
117
+ "sort_order": {
118
+ "type": "number",
119
+ "defaultValue": 0
120
+ },
121
+ "__audit__": {
122
+ "type": "object"
123
+ },
124
+ "__archived__": {
125
+ "type": "boolean",
126
+ "defaultValue": false
127
+ }
128
+ },
129
+ "idGenerator": "UUID",
130
+ "deleteMode": "soft"
131
+ },
132
+ "entries": {
133
+ "spreadsheetId": "__new__",
134
+ "sheetName": "entries",
135
+ "schema": {
136
+ "id": {
137
+ "type": "string",
138
+ "primaryKey": true,
139
+ "required": true
140
+ },
141
+ "title": {
142
+ "type": "string",
143
+ "required": true
144
+ },
145
+ "slug": {
146
+ "type": "string",
147
+ "required": true
148
+ },
149
+ "body": {
150
+ "type": "string",
151
+ "prefixed": true
152
+ },
153
+ "excerpt": {
154
+ "type": "string"
155
+ },
156
+ "status": {
157
+ "type": "string",
158
+ "required": true,
159
+ "defaultValue": "draft"
160
+ },
161
+ "collection_id": {
162
+ "type": "string",
163
+ "required": true,
164
+ "foreignKey": "collections.id"
165
+ },
166
+ "author_id": {
167
+ "type": "string",
168
+ "foreignKey": "authors.id"
169
+ },
170
+ "featured_image_id": {
171
+ "type": "string",
172
+ "foreignKey": "media.id"
173
+ },
174
+ "published_at": {
175
+ "type": "datetime",
176
+ "outputFormat": "yyyy-MM-dd HH:mm:ss",
177
+ "timezone": "UTC"
178
+ },
179
+ "meta_title": {
180
+ "type": "string"
181
+ },
182
+ "meta_description": {
183
+ "type": "string"
184
+ },
185
+ "__audit__": {
186
+ "type": "object"
187
+ },
188
+ "__archived__": {
189
+ "type": "boolean",
190
+ "defaultValue": false
191
+ }
192
+ },
193
+ "idGenerator": "UUID",
194
+ "deleteMode": "soft"
195
+ },
196
+ "categories": {
197
+ "spreadsheetId": "__new__",
198
+ "sheetName": "categories",
199
+ "schema": {
200
+ "id": {
201
+ "type": "string",
202
+ "primaryKey": true,
203
+ "required": true
204
+ },
205
+ "name": {
206
+ "type": "string",
207
+ "required": true
208
+ },
209
+ "slug": {
210
+ "type": "string",
211
+ "required": true
212
+ },
213
+ "description": {
214
+ "type": "string"
215
+ },
216
+ "parent_id": {
217
+ "type": "string",
218
+ "foreignKey": "categories.id"
219
+ },
220
+ "__audit__": {
221
+ "type": "object"
222
+ },
223
+ "__archived__": {
224
+ "type": "boolean",
225
+ "defaultValue": false
226
+ }
227
+ },
228
+ "idGenerator": "UUID",
229
+ "deleteMode": "soft"
230
+ },
231
+ "tags": {
232
+ "spreadsheetId": "__new__",
233
+ "sheetName": "tags",
234
+ "schema": {
235
+ "id": {
236
+ "type": "string",
237
+ "primaryKey": true,
238
+ "required": true
239
+ },
240
+ "name": {
241
+ "type": "string",
242
+ "required": true
243
+ },
244
+ "slug": {
245
+ "type": "string",
246
+ "required": true
247
+ },
248
+ "__audit__": {
249
+ "type": "object"
250
+ },
251
+ "__archived__": {
252
+ "type": "boolean",
253
+ "defaultValue": false
254
+ }
255
+ },
256
+ "idGenerator": "UUID",
257
+ "deleteMode": "soft"
258
+ },
259
+ "entry_tags": {
260
+ "spreadsheetId": "__new__",
261
+ "sheetName": "entry_tags",
262
+ "schema": {
263
+ "id": {
264
+ "type": "string",
265
+ "primaryKey": true,
266
+ "required": true
267
+ },
268
+ "entry_id": {
269
+ "type": "string",
270
+ "required": true,
271
+ "foreignKey": "entries.id"
272
+ },
273
+ "tag_id": {
274
+ "type": "string",
275
+ "required": true,
276
+ "foreignKey": "tags.id"
277
+ },
278
+ "__audit__": {
279
+ "type": "object"
280
+ },
281
+ "__archived__": {
282
+ "type": "boolean",
283
+ "defaultValue": false
284
+ }
285
+ },
286
+ "idGenerator": "UUID",
287
+ "deleteMode": "hard"
288
+ },
289
+ "entry_categories": {
290
+ "spreadsheetId": "__new__",
291
+ "sheetName": "entry_categories",
292
+ "schema": {
293
+ "id": {
294
+ "type": "string",
295
+ "primaryKey": true,
296
+ "required": true
297
+ },
298
+ "entry_id": {
299
+ "type": "string",
300
+ "required": true,
301
+ "foreignKey": "entries.id"
302
+ },
303
+ "category_id": {
304
+ "type": "string",
305
+ "required": true,
306
+ "foreignKey": "categories.id"
307
+ },
308
+ "__audit__": {
309
+ "type": "object"
310
+ },
311
+ "__archived__": {
312
+ "type": "boolean",
313
+ "defaultValue": false
314
+ }
315
+ },
316
+ "idGenerator": "UUID",
317
+ "deleteMode": "hard"
318
+ },
319
+ "authors": {
320
+ "spreadsheetId": "__new__",
321
+ "sheetName": "authors",
322
+ "schema": {
323
+ "id": {
324
+ "type": "string",
325
+ "primaryKey": true,
326
+ "required": true
327
+ },
328
+ "name": {
329
+ "type": "string",
330
+ "required": true
331
+ },
332
+ "slug": {
333
+ "type": "string",
334
+ "required": true
335
+ },
336
+ "email": {
337
+ "type": "string"
338
+ },
339
+ "bio": {
340
+ "type": "string"
341
+ },
342
+ "user_id": {
343
+ "type": "string",
344
+ "foreignKey": "users.id"
345
+ },
346
+ "__audit__": {
347
+ "type": "object"
348
+ },
349
+ "__archived__": {
350
+ "type": "boolean",
351
+ "defaultValue": false
352
+ }
353
+ },
354
+ "idGenerator": "UUID",
355
+ "deleteMode": "soft"
356
+ },
357
+ "navigations": {
358
+ "spreadsheetId": "__new__",
359
+ "sheetName": "navigations",
360
+ "schema": {
361
+ "id": {
362
+ "type": "string",
363
+ "primaryKey": true,
364
+ "required": true
365
+ },
366
+ "name": {
367
+ "type": "string",
368
+ "required": true
369
+ },
370
+ "slug": {
371
+ "type": "string",
372
+ "required": true
373
+ },
374
+ "location": {
375
+ "type": "string",
376
+ "required": true
377
+ },
378
+ "config": {
379
+ "type": "object",
380
+ "prefixed": true
381
+ },
382
+ "active": {
383
+ "type": "boolean",
384
+ "defaultValue": true
385
+ },
386
+ "__audit__": {
387
+ "type": "object"
388
+ },
389
+ "__archived__": {
390
+ "type": "boolean",
391
+ "defaultValue": false
392
+ }
393
+ },
394
+ "idGenerator": "UUID",
395
+ "deleteMode": "soft"
396
+ },
397
+ "users": {
398
+ "spreadsheetId": "__new__",
399
+ "sheetName": "users",
400
+ "schema": {
401
+ "id": {
402
+ "type": "string",
403
+ "primaryKey": true,
404
+ "required": true
405
+ },
406
+ "email": {
407
+ "type": "string",
408
+ "required": true
409
+ },
410
+ "name": {
411
+ "type": "string",
412
+ "required": true
413
+ },
414
+ "role": {
415
+ "type": "string",
416
+ "required": true,
417
+ "defaultValue": "viewer"
418
+ },
419
+ "active": {
420
+ "type": "boolean",
421
+ "defaultValue": true
422
+ },
423
+ "__audit__": {
424
+ "type": "object"
425
+ },
426
+ "__archived__": {
427
+ "type": "boolean",
428
+ "defaultValue": false
429
+ }
430
+ },
431
+ "idGenerator": "UUID",
432
+ "deleteMode": "soft"
433
+ },
434
+ "media": {
435
+ "spreadsheetId": "__new__",
436
+ "sheetName": "media",
437
+ "schema": {
438
+ "id": {
439
+ "type": "string",
440
+ "primaryKey": true,
441
+ "required": true
442
+ },
443
+ "filename": {
444
+ "type": "string",
445
+ "required": true
446
+ },
447
+ "url": {
448
+ "type": "string",
449
+ "required": true
450
+ },
451
+ "alt_text": {
452
+ "type": "string"
453
+ },
454
+ "mime_type": {
455
+ "type": "string"
456
+ },
457
+ "size_bytes": {
458
+ "type": "number"
459
+ },
460
+ "uploaded_by": {
461
+ "type": "string",
462
+ "foreignKey": "users.id"
463
+ },
464
+ "__audit__": {
465
+ "type": "object"
466
+ },
467
+ "__archived__": {
468
+ "type": "boolean",
469
+ "defaultValue": false
470
+ }
471
+ },
472
+ "idGenerator": "UUID",
473
+ "deleteMode": "soft"
474
+ },
475
+ "settings": {
476
+ "spreadsheetId": "__new__",
477
+ "sheetName": "settings",
478
+ "schema": {
479
+ "id": {
480
+ "type": "string",
481
+ "primaryKey": true,
482
+ "required": true
483
+ },
484
+ "key": {
485
+ "type": "string",
486
+ "required": true
487
+ },
488
+ "value": {
489
+ "type": "string",
490
+ "prefixed": true
491
+ },
492
+ "description": {
493
+ "type": "string"
494
+ },
495
+ "__audit__": {
496
+ "type": "object"
497
+ },
498
+ "__archived__": {
499
+ "type": "boolean",
500
+ "defaultValue": false
501
+ }
502
+ },
503
+ "idGenerator": "UUID",
504
+ "deleteMode": "soft"
505
+ }
506
+ }
507
+ }