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,307 @@
1
+ {
2
+ "name": "inventory",
3
+ "description": "Inventory management — items, warehouses, stock movements, suppliers",
4
+ "tables": {
5
+ "warehouses": {
6
+ "spreadsheetId": "__new__",
7
+ "sheetName": "warehouses",
8
+ "schema": {
9
+ "id": {
10
+ "type": "string",
11
+ "primaryKey": true,
12
+ "required": true
13
+ },
14
+ "name": {
15
+ "type": "string",
16
+ "required": true
17
+ },
18
+ "code": {
19
+ "type": "string",
20
+ "required": true
21
+ },
22
+ "address": {
23
+ "type": "string"
24
+ },
25
+ "city": {
26
+ "type": "string"
27
+ },
28
+ "country": {
29
+ "type": "string"
30
+ },
31
+ "active": {
32
+ "type": "boolean",
33
+ "defaultValue": true
34
+ },
35
+ "__audit__": {
36
+ "type": "object"
37
+ },
38
+ "__archived__": {
39
+ "type": "boolean",
40
+ "defaultValue": false
41
+ }
42
+ },
43
+ "idGenerator": "UUID",
44
+ "deleteMode": "soft"
45
+ },
46
+ "suppliers": {
47
+ "spreadsheetId": "__new__",
48
+ "sheetName": "suppliers",
49
+ "schema": {
50
+ "id": {
51
+ "type": "string",
52
+ "primaryKey": true,
53
+ "required": true
54
+ },
55
+ "name": {
56
+ "type": "string",
57
+ "required": true
58
+ },
59
+ "contact_email": {
60
+ "type": "string"
61
+ },
62
+ "contact_phone": {
63
+ "type": "string"
64
+ },
65
+ "address": {
66
+ "type": "string"
67
+ },
68
+ "country": {
69
+ "type": "string"
70
+ },
71
+ "lead_time_days": {
72
+ "type": "number"
73
+ },
74
+ "notes": {
75
+ "type": "string"
76
+ },
77
+ "__audit__": {
78
+ "type": "object"
79
+ },
80
+ "__archived__": {
81
+ "type": "boolean",
82
+ "defaultValue": false
83
+ }
84
+ },
85
+ "idGenerator": "UUID",
86
+ "deleteMode": "soft"
87
+ },
88
+ "items": {
89
+ "spreadsheetId": "__new__",
90
+ "sheetName": "items",
91
+ "schema": {
92
+ "id": {
93
+ "type": "string",
94
+ "primaryKey": true,
95
+ "required": true
96
+ },
97
+ "name": {
98
+ "type": "string",
99
+ "required": true
100
+ },
101
+ "sku": {
102
+ "type": "string",
103
+ "required": true
104
+ },
105
+ "description": {
106
+ "type": "string"
107
+ },
108
+ "category": {
109
+ "type": "string"
110
+ },
111
+ "unit": {
112
+ "type": "string",
113
+ "defaultValue": "pcs"
114
+ },
115
+ "cost_price": {
116
+ "type": "number"
117
+ },
118
+ "sell_price": {
119
+ "type": "number"
120
+ },
121
+ "reorder_point": {
122
+ "type": "number",
123
+ "defaultValue": 10
124
+ },
125
+ "supplier_id": {
126
+ "type": "string",
127
+ "foreignKey": "suppliers.id"
128
+ },
129
+ "__audit__": {
130
+ "type": "object"
131
+ },
132
+ "__archived__": {
133
+ "type": "boolean",
134
+ "defaultValue": false
135
+ }
136
+ },
137
+ "idGenerator": "UUID",
138
+ "deleteMode": "soft"
139
+ },
140
+ "stock": {
141
+ "spreadsheetId": "__new__",
142
+ "sheetName": "stock",
143
+ "schema": {
144
+ "id": {
145
+ "type": "string",
146
+ "primaryKey": true,
147
+ "required": true
148
+ },
149
+ "item_id": {
150
+ "type": "string",
151
+ "required": true,
152
+ "foreignKey": "items.id"
153
+ },
154
+ "warehouse_id": {
155
+ "type": "string",
156
+ "required": true,
157
+ "foreignKey": "warehouses.id"
158
+ },
159
+ "quantity": {
160
+ "type": "number",
161
+ "required": true,
162
+ "defaultValue": 0
163
+ },
164
+ "__audit__": {
165
+ "type": "object"
166
+ },
167
+ "__archived__": {
168
+ "type": "boolean",
169
+ "defaultValue": false
170
+ }
171
+ },
172
+ "idGenerator": "UUID",
173
+ "deleteMode": "soft"
174
+ },
175
+ "stock_movements": {
176
+ "spreadsheetId": "__new__",
177
+ "sheetName": "stock_movements",
178
+ "schema": {
179
+ "id": {
180
+ "type": "string",
181
+ "primaryKey": true,
182
+ "required": true
183
+ },
184
+ "item_id": {
185
+ "type": "string",
186
+ "required": true,
187
+ "foreignKey": "items.id"
188
+ },
189
+ "warehouse_id": {
190
+ "type": "string",
191
+ "required": true,
192
+ "foreignKey": "warehouses.id"
193
+ },
194
+ "type": {
195
+ "type": "string",
196
+ "required": true
197
+ },
198
+ "quantity": {
199
+ "type": "number",
200
+ "required": true
201
+ },
202
+ "reference": {
203
+ "type": "string"
204
+ },
205
+ "notes": {
206
+ "type": "string"
207
+ },
208
+ "moved_at": {
209
+ "type": "datetime",
210
+ "outputFormat": "yyyy-MM-dd HH:mm:ss",
211
+ "timezone": "UTC"
212
+ },
213
+ "__audit__": {
214
+ "type": "object"
215
+ },
216
+ "__archived__": {
217
+ "type": "boolean",
218
+ "defaultValue": false
219
+ }
220
+ },
221
+ "idGenerator": "UUID",
222
+ "deleteMode": "soft"
223
+ },
224
+ "comments": {
225
+ "spreadsheetId": "__new__",
226
+ "sheetName": "comments",
227
+ "schema": {
228
+ "id": {
229
+ "type": "string",
230
+ "primaryKey": true,
231
+ "required": true
232
+ },
233
+ "entity_type": {
234
+ "type": "string",
235
+ "required": true
236
+ },
237
+ "entity_id": {
238
+ "type": "string",
239
+ "required": true
240
+ },
241
+ "parent_id": {
242
+ "type": "string",
243
+ "foreignKey": "comments.id"
244
+ },
245
+ "author_name": {
246
+ "type": "string",
247
+ "required": true
248
+ },
249
+ "author_email": {
250
+ "type": "string"
251
+ },
252
+ "author_id": {
253
+ "type": "string"
254
+ },
255
+ "body": {
256
+ "type": "string",
257
+ "required": true
258
+ },
259
+ "status": {
260
+ "type": "string",
261
+ "required": true,
262
+ "defaultValue": "approved"
263
+ },
264
+ "__audit__": {
265
+ "type": "object"
266
+ },
267
+ "__archived__": {
268
+ "type": "boolean",
269
+ "defaultValue": false
270
+ }
271
+ },
272
+ "idGenerator": "UUID",
273
+ "deleteMode": "soft"
274
+ },
275
+ "settings": {
276
+ "spreadsheetId": "__new__",
277
+ "sheetName": "settings",
278
+ "schema": {
279
+ "id": {
280
+ "type": "string",
281
+ "primaryKey": true,
282
+ "required": true
283
+ },
284
+ "key": {
285
+ "type": "string",
286
+ "required": true
287
+ },
288
+ "value": {
289
+ "type": "string",
290
+ "prefixed": true
291
+ },
292
+ "description": {
293
+ "type": "string"
294
+ },
295
+ "__audit__": {
296
+ "type": "object"
297
+ },
298
+ "__archived__": {
299
+ "type": "boolean",
300
+ "defaultValue": false
301
+ }
302
+ },
303
+ "idGenerator": "UUID",
304
+ "deleteMode": "soft"
305
+ }
306
+ }
307
+ }