@kernhq/module-inventory 0.2.0 → 0.4.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 (198) hide show
  1. package/README.md +106 -25
  2. package/dist/contract/capabilities.d.ts +4 -4
  3. package/dist/contract/capabilities.d.ts.map +1 -1
  4. package/dist/contract/capabilities.js +51 -9
  5. package/dist/contract/capabilities.js.map +1 -1
  6. package/dist/contract/events.d.ts +43 -0
  7. package/dist/contract/events.d.ts.map +1 -1
  8. package/dist/contract/events.js +40 -0
  9. package/dist/contract/events.js.map +1 -1
  10. package/dist/contract/index.d.ts +1 -0
  11. package/dist/contract/index.d.ts.map +1 -1
  12. package/dist/contract/index.js +1 -0
  13. package/dist/contract/index.js.map +1 -1
  14. package/dist/contract/models.d.ts +345 -0
  15. package/dist/contract/models.d.ts.map +1 -1
  16. package/dist/contract/models.js +245 -0
  17. package/dist/contract/models.js.map +1 -1
  18. package/dist/contract/notifications.d.ts +24 -0
  19. package/dist/contract/notifications.d.ts.map +1 -0
  20. package/dist/contract/notifications.js +72 -0
  21. package/dist/contract/notifications.js.map +1 -0
  22. package/dist/contract/permissions.d.ts +52 -2
  23. package/dist/contract/permissions.d.ts.map +1 -1
  24. package/dist/contract/permissions.js +55 -2
  25. package/dist/contract/permissions.js.map +1 -1
  26. package/dist/contract/router.d.ts +1108 -0
  27. package/dist/contract/router.d.ts.map +1 -1
  28. package/dist/contract/router.js +253 -1
  29. package/dist/contract/router.js.map +1 -1
  30. package/dist/contract/settings.d.ts +2 -0
  31. package/dist/contract/settings.d.ts.map +1 -1
  32. package/dist/contract/settings.js +24 -4
  33. package/dist/contract/settings.js.map +1 -1
  34. package/dist/server/index.d.ts +8 -4
  35. package/dist/server/index.d.ts.map +1 -1
  36. package/dist/server/index.js +289 -5
  37. package/dist/server/index.js.map +1 -1
  38. package/dist/server/jobs.d.ts +48 -0
  39. package/dist/server/jobs.d.ts.map +1 -0
  40. package/dist/server/jobs.js +358 -0
  41. package/dist/server/jobs.js.map +1 -0
  42. package/dist/server/router.d.ts +1392 -0
  43. package/dist/server/router.d.ts.map +1 -1
  44. package/dist/server/router.js +385 -7
  45. package/dist/server/router.js.map +1 -1
  46. package/dist/server/schema.d.ts +134 -1
  47. package/dist/server/schema.d.ts.map +1 -1
  48. package/dist/server/schema.js +169 -4
  49. package/dist/server/schema.js.map +1 -1
  50. package/dist/server/services/assets.d.ts +69 -3
  51. package/dist/server/services/assets.d.ts.map +1 -1
  52. package/dist/server/services/assets.js +199 -31
  53. package/dist/server/services/assets.js.map +1 -1
  54. package/dist/server/services/attachments.d.ts +80 -0
  55. package/dist/server/services/attachments.d.ts.map +1 -0
  56. package/dist/server/services/attachments.js +182 -0
  57. package/dist/server/services/attachments.js.map +1 -0
  58. package/dist/server/services/audience.d.ts +15 -0
  59. package/dist/server/services/audience.d.ts.map +1 -0
  60. package/dist/server/services/audience.js +64 -0
  61. package/dist/server/services/audience.js.map +1 -0
  62. package/dist/server/services/categories.d.ts +157 -0
  63. package/dist/server/services/categories.d.ts.map +1 -0
  64. package/dist/server/services/categories.js +309 -0
  65. package/dist/server/services/categories.js.map +1 -0
  66. package/dist/server/services/cursor.d.ts +68 -0
  67. package/dist/server/services/cursor.d.ts.map +1 -0
  68. package/dist/server/services/cursor.js +39 -0
  69. package/dist/server/services/cursor.js.map +1 -0
  70. package/dist/server/services/custody.d.ts +175 -0
  71. package/dist/server/services/custody.d.ts.map +1 -0
  72. package/dist/server/services/custody.js +367 -0
  73. package/dist/server/services/custody.js.map +1 -0
  74. package/dist/server/services/db-errors.d.ts +7 -0
  75. package/dist/server/services/db-errors.d.ts.map +1 -0
  76. package/dist/server/services/db-errors.js +32 -0
  77. package/dist/server/services/db-errors.js.map +1 -0
  78. package/dist/server/services/index.d.ts +16 -0
  79. package/dist/server/services/index.d.ts.map +1 -1
  80. package/dist/server/services/index.js +25 -1
  81. package/dist/server/services/index.js.map +1 -1
  82. package/dist/server/services/members.d.ts +27 -0
  83. package/dist/server/services/members.d.ts.map +1 -0
  84. package/dist/server/services/members.js +39 -0
  85. package/dist/server/services/members.js.map +1 -0
  86. package/dist/server/services/notify.d.ts +43 -1
  87. package/dist/server/services/notify.d.ts.map +1 -1
  88. package/dist/server/services/notify.js +47 -5
  89. package/dist/server/services/notify.js.map +1 -1
  90. package/dist/server/services/offboarding.d.ts +70 -0
  91. package/dist/server/services/offboarding.d.ts.map +1 -0
  92. package/dist/server/services/offboarding.js +116 -0
  93. package/dist/server/services/offboarding.js.map +1 -0
  94. package/dist/server/services/repairs.d.ts +204 -0
  95. package/dist/server/services/repairs.d.ts.map +1 -0
  96. package/dist/server/services/repairs.js +476 -0
  97. package/dist/server/services/repairs.js.map +1 -0
  98. package/dist/server/services/search.d.ts +85 -0
  99. package/dist/server/services/search.d.ts.map +1 -0
  100. package/dist/server/services/search.js +142 -0
  101. package/dist/server/services/search.js.map +1 -0
  102. package/dist/server/services/stats.d.ts +42 -0
  103. package/dist/server/services/stats.d.ts.map +1 -0
  104. package/dist/server/services/stats.js +80 -0
  105. package/dist/server/services/stats.js.map +1 -0
  106. package/dist/server/services/status.d.ts +102 -0
  107. package/dist/server/services/status.d.ts.map +1 -0
  108. package/dist/server/services/status.js +71 -0
  109. package/dist/server/services/status.js.map +1 -0
  110. package/migrations/0002_custody_and_categories.sql +23 -0
  111. package/migrations/0003_repairs.sql +23 -0
  112. package/migrations/0004_platform_surfaces.sql +51 -0
  113. package/migrations/0005_repair_dates.sql +35 -0
  114. package/migrations/0006_workspace_registry_read.sql +50 -0
  115. package/migrations/0007_history_sequence.sql +83 -0
  116. package/migrations/0008_category_order_unique.sql +71 -0
  117. package/migrations/meta/0002_snapshot.json +1054 -0
  118. package/migrations/meta/0003_snapshot.json +1070 -0
  119. package/migrations/meta/0004_snapshot.json +1130 -0
  120. package/migrations/meta/0005_snapshot.json +1135 -0
  121. package/migrations/meta/_journal.json +49 -0
  122. package/package.json +2 -1
  123. package/src/client/api-instance.ts +27 -2
  124. package/src/client/bidi.test.ts +148 -0
  125. package/src/client/bidi.ts +85 -0
  126. package/src/client/components/AssetDetailPanel.svelte +614 -0
  127. package/src/client/components/AssetFormDialog.svelte +71 -22
  128. package/src/client/components/AssetPhoto.svelte +178 -0
  129. package/src/client/components/AttachmentsSection.svelte +327 -0
  130. package/src/client/components/CustodyDialog.svelte +201 -0
  131. package/src/client/components/RepairDialog.svelte +271 -0
  132. package/src/client/components/RepairsSection.svelte +318 -0
  133. package/src/client/components/Timeline.svelte +347 -0
  134. package/src/client/components/TimelineText.svelte +124 -0
  135. package/src/client/core-api.ts +71 -0
  136. package/src/client/custody.test.ts +31 -0
  137. package/src/client/custody.ts +34 -0
  138. package/src/client/errors.test.ts +395 -0
  139. package/src/client/errors.ts +229 -0
  140. package/src/client/links.test.ts +74 -0
  141. package/src/client/links.ts +44 -0
  142. package/src/client/members.test.ts +132 -0
  143. package/src/client/members.ts +116 -0
  144. package/src/client/messages.test.ts +127 -0
  145. package/src/client/messages.ts +1106 -18
  146. package/src/client/mock.test.ts +465 -1
  147. package/src/client/mock.ts +1105 -79
  148. package/src/client/module.ts +73 -1
  149. package/src/client/pages/AssetsPage.svelte +317 -45
  150. package/src/client/permissions.ts +7 -0
  151. package/src/client/price.test.ts +151 -3
  152. package/src/client/price.ts +155 -11
  153. package/src/client/query.ts +36 -0
  154. package/src/client/reorder.test.ts +100 -0
  155. package/src/client/reorder.ts +79 -0
  156. package/src/client/repairs.test.ts +38 -0
  157. package/src/client/repairs.ts +38 -0
  158. package/src/client/sequence.test.ts +248 -0
  159. package/src/client/sequence.ts +185 -0
  160. package/src/client/settings/CategoriesSettings.svelte +746 -0
  161. package/src/client/settings/GeneralSettings.svelte +0 -0
  162. package/src/client/status.ts +29 -0
  163. package/src/client/timeline.test.ts +175 -0
  164. package/src/client/timeline.ts +206 -0
  165. package/src/client/widgets/OverviewWidget.svelte +127 -26
  166. package/src/client/widgets/RepairsWidget.svelte +124 -0
  167. package/src/contract/capabilities.ts +53 -9
  168. package/src/contract/events.ts +49 -0
  169. package/src/contract/index.ts +1 -0
  170. package/src/contract/models.ts +270 -0
  171. package/src/contract/notifications.ts +73 -0
  172. package/src/contract/permissions.ts +55 -2
  173. package/src/contract/router.ts +284 -1
  174. package/src/contract/settings.ts +24 -4
  175. package/src/module.test.ts +217 -4
  176. package/src/server/index.ts +311 -4
  177. package/src/server/inventory.int.test.ts +4109 -19
  178. package/src/server/jobs.ts +444 -0
  179. package/src/server/migrations.test.ts +253 -2
  180. package/src/server/router.ts +486 -6
  181. package/src/server/schema.ts +171 -3
  182. package/src/server/services/assets.ts +214 -54
  183. package/src/server/services/attachments.ts +215 -0
  184. package/src/server/services/audience.ts +77 -0
  185. package/src/server/services/categories.ts +337 -0
  186. package/src/server/services/cursor.ts +104 -0
  187. package/src/server/services/custody.ts +471 -0
  188. package/src/server/services/db-errors.ts +42 -0
  189. package/src/server/services/index.ts +34 -1
  190. package/src/server/services/members.ts +54 -0
  191. package/src/server/services/notify.ts +52 -7
  192. package/src/server/services/offboarding.ts +150 -0
  193. package/src/server/services/repairs.ts +567 -0
  194. package/src/server/services/search.ts +166 -0
  195. package/src/server/services/stats.ts +88 -0
  196. package/src/server/services/status.test.ts +34 -0
  197. package/src/server/services/status.ts +143 -0
  198. package/src/client/settings/core-api.ts +0 -32
@@ -0,0 +1,1130 @@
1
+ {
2
+ "id": "02e87449-db54-4bb2-b352-9573dc3a597b",
3
+ "prevId": "861a3a12-952f-4797-a603-9cc0c11ea70d",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "mod_inventory.asset_history": {
8
+ "name": "asset_history",
9
+ "schema": "mod_inventory",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "uuid",
14
+ "primaryKey": true,
15
+ "notNull": true,
16
+ "default": "uuidv7()"
17
+ },
18
+ "workspace_id": {
19
+ "name": "workspace_id",
20
+ "type": "uuid",
21
+ "primaryKey": false,
22
+ "notNull": true
23
+ },
24
+ "asset_id": {
25
+ "name": "asset_id",
26
+ "type": "uuid",
27
+ "primaryKey": false,
28
+ "notNull": true
29
+ },
30
+ "actor_id": {
31
+ "name": "actor_id",
32
+ "type": "uuid",
33
+ "primaryKey": false,
34
+ "notNull": false
35
+ },
36
+ "action": {
37
+ "name": "action",
38
+ "type": "text",
39
+ "primaryKey": false,
40
+ "notNull": true
41
+ },
42
+ "changes": {
43
+ "name": "changes",
44
+ "type": "jsonb",
45
+ "primaryKey": false,
46
+ "notNull": false
47
+ },
48
+ "data": {
49
+ "name": "data",
50
+ "type": "jsonb",
51
+ "primaryKey": false,
52
+ "notNull": false
53
+ },
54
+ "created_at": {
55
+ "name": "created_at",
56
+ "type": "timestamp with time zone",
57
+ "primaryKey": false,
58
+ "notNull": true,
59
+ "default": "now()"
60
+ }
61
+ },
62
+ "indexes": {
63
+ "inventory_asset_history_asset_idx": {
64
+ "name": "inventory_asset_history_asset_idx",
65
+ "columns": [
66
+ {
67
+ "expression": "workspace_id",
68
+ "isExpression": false,
69
+ "asc": true,
70
+ "nulls": "last"
71
+ },
72
+ {
73
+ "expression": "asset_id",
74
+ "isExpression": false,
75
+ "asc": true,
76
+ "nulls": "last"
77
+ },
78
+ {
79
+ "expression": "created_at",
80
+ "isExpression": false,
81
+ "asc": true,
82
+ "nulls": "last"
83
+ }
84
+ ],
85
+ "isUnique": false,
86
+ "concurrently": false,
87
+ "method": "btree",
88
+ "with": {}
89
+ },
90
+ "inventory_asset_history_ws_asset_row_idx": {
91
+ "name": "inventory_asset_history_ws_asset_row_idx",
92
+ "columns": [
93
+ {
94
+ "expression": "workspace_id",
95
+ "isExpression": false,
96
+ "asc": true,
97
+ "nulls": "last"
98
+ },
99
+ {
100
+ "expression": "asset_id",
101
+ "isExpression": false,
102
+ "asc": true,
103
+ "nulls": "last"
104
+ },
105
+ {
106
+ "expression": "id",
107
+ "isExpression": false,
108
+ "asc": true,
109
+ "nulls": "last"
110
+ }
111
+ ],
112
+ "isUnique": false,
113
+ "concurrently": false,
114
+ "method": "btree",
115
+ "with": {}
116
+ }
117
+ },
118
+ "foreignKeys": {},
119
+ "compositePrimaryKeys": {},
120
+ "uniqueConstraints": {},
121
+ "policies": {},
122
+ "checkConstraints": {},
123
+ "isRLSEnabled": false
124
+ },
125
+ "mod_inventory.assets": {
126
+ "name": "assets",
127
+ "schema": "mod_inventory",
128
+ "columns": {
129
+ "id": {
130
+ "name": "id",
131
+ "type": "uuid",
132
+ "primaryKey": true,
133
+ "notNull": true,
134
+ "default": "uuidv7()"
135
+ },
136
+ "workspace_id": {
137
+ "name": "workspace_id",
138
+ "type": "uuid",
139
+ "primaryKey": false,
140
+ "notNull": true
141
+ },
142
+ "code": {
143
+ "name": "code",
144
+ "type": "text",
145
+ "primaryKey": false,
146
+ "notNull": true
147
+ },
148
+ "name": {
149
+ "name": "name",
150
+ "type": "text",
151
+ "primaryKey": false,
152
+ "notNull": true
153
+ },
154
+ "description": {
155
+ "name": "description",
156
+ "type": "text",
157
+ "primaryKey": false,
158
+ "notNull": true,
159
+ "default": "''"
160
+ },
161
+ "category_id": {
162
+ "name": "category_id",
163
+ "type": "uuid",
164
+ "primaryKey": false,
165
+ "notNull": false
166
+ },
167
+ "status": {
168
+ "name": "status",
169
+ "type": "text",
170
+ "primaryKey": false,
171
+ "notNull": true,
172
+ "default": "'in_stock'"
173
+ },
174
+ "custodian_user_id": {
175
+ "name": "custodian_user_id",
176
+ "type": "uuid",
177
+ "primaryKey": false,
178
+ "notNull": false
179
+ },
180
+ "custody_since": {
181
+ "name": "custody_since",
182
+ "type": "timestamp with time zone",
183
+ "primaryKey": false,
184
+ "notNull": false
185
+ },
186
+ "serial_number": {
187
+ "name": "serial_number",
188
+ "type": "text",
189
+ "primaryKey": false,
190
+ "notNull": false
191
+ },
192
+ "location": {
193
+ "name": "location",
194
+ "type": "text",
195
+ "primaryKey": false,
196
+ "notNull": false
197
+ },
198
+ "purchased_on": {
199
+ "name": "purchased_on",
200
+ "type": "date",
201
+ "primaryKey": false,
202
+ "notNull": false
203
+ },
204
+ "purchased_from": {
205
+ "name": "purchased_from",
206
+ "type": "text",
207
+ "primaryKey": false,
208
+ "notNull": false
209
+ },
210
+ "price_minor": {
211
+ "name": "price_minor",
212
+ "type": "integer",
213
+ "primaryKey": false,
214
+ "notNull": false
215
+ },
216
+ "currency": {
217
+ "name": "currency",
218
+ "type": "char(3)",
219
+ "primaryKey": false,
220
+ "notNull": false
221
+ },
222
+ "warranty_until": {
223
+ "name": "warranty_until",
224
+ "type": "date",
225
+ "primaryKey": false,
226
+ "notNull": false
227
+ },
228
+ "warranty_notified_at": {
229
+ "name": "warranty_notified_at",
230
+ "type": "timestamp with time zone",
231
+ "primaryKey": false,
232
+ "notNull": false
233
+ },
234
+ "photo_file_id": {
235
+ "name": "photo_file_id",
236
+ "type": "uuid",
237
+ "primaryKey": false,
238
+ "notNull": false
239
+ },
240
+ "custom": {
241
+ "name": "custom",
242
+ "type": "jsonb",
243
+ "primaryKey": false,
244
+ "notNull": true,
245
+ "default": "'{}'::jsonb"
246
+ },
247
+ "created_at": {
248
+ "name": "created_at",
249
+ "type": "timestamp with time zone",
250
+ "primaryKey": false,
251
+ "notNull": true,
252
+ "default": "now()"
253
+ },
254
+ "updated_at": {
255
+ "name": "updated_at",
256
+ "type": "timestamp with time zone",
257
+ "primaryKey": false,
258
+ "notNull": true,
259
+ "default": "now()"
260
+ },
261
+ "archived_at": {
262
+ "name": "archived_at",
263
+ "type": "timestamp with time zone",
264
+ "primaryKey": false,
265
+ "notNull": false
266
+ }
267
+ },
268
+ "indexes": {
269
+ "inventory_assets_ws_code_uq": {
270
+ "name": "inventory_assets_ws_code_uq",
271
+ "columns": [
272
+ {
273
+ "expression": "workspace_id",
274
+ "isExpression": false,
275
+ "asc": true,
276
+ "nulls": "last"
277
+ },
278
+ {
279
+ "expression": "code",
280
+ "isExpression": false,
281
+ "asc": true,
282
+ "nulls": "last"
283
+ }
284
+ ],
285
+ "isUnique": true,
286
+ "concurrently": false,
287
+ "method": "btree",
288
+ "with": {}
289
+ },
290
+ "inventory_assets_ws_created_idx": {
291
+ "name": "inventory_assets_ws_created_idx",
292
+ "columns": [
293
+ {
294
+ "expression": "workspace_id",
295
+ "isExpression": false,
296
+ "asc": true,
297
+ "nulls": "last"
298
+ },
299
+ {
300
+ "expression": "created_at",
301
+ "isExpression": false,
302
+ "asc": true,
303
+ "nulls": "last"
304
+ }
305
+ ],
306
+ "isUnique": false,
307
+ "concurrently": false,
308
+ "method": "btree",
309
+ "with": {}
310
+ },
311
+ "inventory_assets_ws_status_idx": {
312
+ "name": "inventory_assets_ws_status_idx",
313
+ "columns": [
314
+ {
315
+ "expression": "workspace_id",
316
+ "isExpression": false,
317
+ "asc": true,
318
+ "nulls": "last"
319
+ },
320
+ {
321
+ "expression": "status",
322
+ "isExpression": false,
323
+ "asc": true,
324
+ "nulls": "last"
325
+ }
326
+ ],
327
+ "isUnique": false,
328
+ "concurrently": false,
329
+ "method": "btree",
330
+ "with": {}
331
+ },
332
+ "inventory_assets_ws_category_idx": {
333
+ "name": "inventory_assets_ws_category_idx",
334
+ "columns": [
335
+ {
336
+ "expression": "workspace_id",
337
+ "isExpression": false,
338
+ "asc": true,
339
+ "nulls": "last"
340
+ },
341
+ {
342
+ "expression": "category_id",
343
+ "isExpression": false,
344
+ "asc": true,
345
+ "nulls": "last"
346
+ }
347
+ ],
348
+ "isUnique": false,
349
+ "concurrently": false,
350
+ "method": "btree",
351
+ "with": {}
352
+ },
353
+ "inventory_assets_ws_custodian_idx": {
354
+ "name": "inventory_assets_ws_custodian_idx",
355
+ "columns": [
356
+ {
357
+ "expression": "workspace_id",
358
+ "isExpression": false,
359
+ "asc": true,
360
+ "nulls": "last"
361
+ },
362
+ {
363
+ "expression": "custodian_user_id",
364
+ "isExpression": false,
365
+ "asc": true,
366
+ "nulls": "last"
367
+ }
368
+ ],
369
+ "isUnique": false,
370
+ "where": "custodian_user_id is not null",
371
+ "concurrently": false,
372
+ "method": "btree",
373
+ "with": {}
374
+ },
375
+ "inventory_assets_ws_warranty_idx": {
376
+ "name": "inventory_assets_ws_warranty_idx",
377
+ "columns": [
378
+ {
379
+ "expression": "workspace_id",
380
+ "isExpression": false,
381
+ "asc": true,
382
+ "nulls": "last"
383
+ },
384
+ {
385
+ "expression": "warranty_until",
386
+ "isExpression": false,
387
+ "asc": true,
388
+ "nulls": "last"
389
+ }
390
+ ],
391
+ "isUnique": false,
392
+ "where": "warranty_until is not null",
393
+ "concurrently": false,
394
+ "method": "btree",
395
+ "with": {}
396
+ }
397
+ },
398
+ "foreignKeys": {},
399
+ "compositePrimaryKeys": {},
400
+ "uniqueConstraints": {},
401
+ "policies": {},
402
+ "checkConstraints": {},
403
+ "isRLSEnabled": false
404
+ },
405
+ "mod_inventory.attachments": {
406
+ "name": "attachments",
407
+ "schema": "mod_inventory",
408
+ "columns": {
409
+ "id": {
410
+ "name": "id",
411
+ "type": "uuid",
412
+ "primaryKey": true,
413
+ "notNull": true,
414
+ "default": "uuidv7()"
415
+ },
416
+ "workspace_id": {
417
+ "name": "workspace_id",
418
+ "type": "uuid",
419
+ "primaryKey": false,
420
+ "notNull": true
421
+ },
422
+ "asset_id": {
423
+ "name": "asset_id",
424
+ "type": "uuid",
425
+ "primaryKey": false,
426
+ "notNull": true
427
+ },
428
+ "repair_id": {
429
+ "name": "repair_id",
430
+ "type": "uuid",
431
+ "primaryKey": false,
432
+ "notNull": false
433
+ },
434
+ "file_id": {
435
+ "name": "file_id",
436
+ "type": "uuid",
437
+ "primaryKey": false,
438
+ "notNull": true
439
+ },
440
+ "name": {
441
+ "name": "name",
442
+ "type": "text",
443
+ "primaryKey": false,
444
+ "notNull": true
445
+ },
446
+ "mime_type": {
447
+ "name": "mime_type",
448
+ "type": "text",
449
+ "primaryKey": false,
450
+ "notNull": false
451
+ },
452
+ "size": {
453
+ "name": "size",
454
+ "type": "integer",
455
+ "primaryKey": false,
456
+ "notNull": false
457
+ },
458
+ "uploaded_by": {
459
+ "name": "uploaded_by",
460
+ "type": "uuid",
461
+ "primaryKey": false,
462
+ "notNull": false
463
+ },
464
+ "created_at": {
465
+ "name": "created_at",
466
+ "type": "timestamp with time zone",
467
+ "primaryKey": false,
468
+ "notNull": true,
469
+ "default": "now()"
470
+ }
471
+ },
472
+ "indexes": {
473
+ "inventory_attachments_asset_file_uq": {
474
+ "name": "inventory_attachments_asset_file_uq",
475
+ "columns": [
476
+ {
477
+ "expression": "asset_id",
478
+ "isExpression": false,
479
+ "asc": true,
480
+ "nulls": "last"
481
+ },
482
+ {
483
+ "expression": "file_id",
484
+ "isExpression": false,
485
+ "asc": true,
486
+ "nulls": "last"
487
+ }
488
+ ],
489
+ "isUnique": true,
490
+ "concurrently": false,
491
+ "method": "btree",
492
+ "with": {}
493
+ },
494
+ "inventory_attachments_ws_asset_idx": {
495
+ "name": "inventory_attachments_ws_asset_idx",
496
+ "columns": [
497
+ {
498
+ "expression": "workspace_id",
499
+ "isExpression": false,
500
+ "asc": true,
501
+ "nulls": "last"
502
+ },
503
+ {
504
+ "expression": "asset_id",
505
+ "isExpression": false,
506
+ "asc": true,
507
+ "nulls": "last"
508
+ },
509
+ {
510
+ "expression": "created_at",
511
+ "isExpression": false,
512
+ "asc": true,
513
+ "nulls": "last"
514
+ }
515
+ ],
516
+ "isUnique": false,
517
+ "concurrently": false,
518
+ "method": "btree",
519
+ "with": {}
520
+ }
521
+ },
522
+ "foreignKeys": {},
523
+ "compositePrimaryKeys": {},
524
+ "uniqueConstraints": {},
525
+ "policies": {},
526
+ "checkConstraints": {},
527
+ "isRLSEnabled": false
528
+ },
529
+ "mod_inventory.categories": {
530
+ "name": "categories",
531
+ "schema": "mod_inventory",
532
+ "columns": {
533
+ "id": {
534
+ "name": "id",
535
+ "type": "uuid",
536
+ "primaryKey": true,
537
+ "notNull": true,
538
+ "default": "uuidv7()"
539
+ },
540
+ "workspace_id": {
541
+ "name": "workspace_id",
542
+ "type": "uuid",
543
+ "primaryKey": false,
544
+ "notNull": true
545
+ },
546
+ "name": {
547
+ "name": "name",
548
+ "type": "text",
549
+ "primaryKey": false,
550
+ "notNull": true
551
+ },
552
+ "order": {
553
+ "name": "order",
554
+ "type": "integer",
555
+ "primaryKey": false,
556
+ "notNull": true,
557
+ "default": 0
558
+ },
559
+ "archived_at": {
560
+ "name": "archived_at",
561
+ "type": "timestamp with time zone",
562
+ "primaryKey": false,
563
+ "notNull": false
564
+ },
565
+ "created_at": {
566
+ "name": "created_at",
567
+ "type": "timestamp with time zone",
568
+ "primaryKey": false,
569
+ "notNull": true,
570
+ "default": "now()"
571
+ },
572
+ "updated_at": {
573
+ "name": "updated_at",
574
+ "type": "timestamp with time zone",
575
+ "primaryKey": false,
576
+ "notNull": true,
577
+ "default": "now()"
578
+ }
579
+ },
580
+ "indexes": {
581
+ "inventory_categories_ws_name_uq": {
582
+ "name": "inventory_categories_ws_name_uq",
583
+ "columns": [
584
+ {
585
+ "expression": "workspace_id",
586
+ "isExpression": false,
587
+ "asc": true,
588
+ "nulls": "last"
589
+ },
590
+ {
591
+ "expression": "name",
592
+ "isExpression": false,
593
+ "asc": true,
594
+ "nulls": "last"
595
+ }
596
+ ],
597
+ "isUnique": true,
598
+ "concurrently": false,
599
+ "method": "btree",
600
+ "with": {}
601
+ },
602
+ "inventory_categories_ws_idx": {
603
+ "name": "inventory_categories_ws_idx",
604
+ "columns": [
605
+ {
606
+ "expression": "workspace_id",
607
+ "isExpression": false,
608
+ "asc": true,
609
+ "nulls": "last"
610
+ },
611
+ {
612
+ "expression": "order",
613
+ "isExpression": false,
614
+ "asc": true,
615
+ "nulls": "last"
616
+ }
617
+ ],
618
+ "isUnique": false,
619
+ "concurrently": false,
620
+ "method": "btree",
621
+ "with": {}
622
+ }
623
+ },
624
+ "foreignKeys": {},
625
+ "compositePrimaryKeys": {},
626
+ "uniqueConstraints": {},
627
+ "policies": {},
628
+ "checkConstraints": {},
629
+ "isRLSEnabled": false
630
+ },
631
+ "mod_inventory.counters": {
632
+ "name": "counters",
633
+ "schema": "mod_inventory",
634
+ "columns": {
635
+ "workspace_id": {
636
+ "name": "workspace_id",
637
+ "type": "uuid",
638
+ "primaryKey": false,
639
+ "notNull": true
640
+ },
641
+ "key": {
642
+ "name": "key",
643
+ "type": "text",
644
+ "primaryKey": false,
645
+ "notNull": true
646
+ },
647
+ "value": {
648
+ "name": "value",
649
+ "type": "integer",
650
+ "primaryKey": false,
651
+ "notNull": true
652
+ }
653
+ },
654
+ "indexes": {},
655
+ "foreignKeys": {},
656
+ "compositePrimaryKeys": {
657
+ "counters_workspace_id_key_pk": {
658
+ "name": "counters_workspace_id_key_pk",
659
+ "columns": ["workspace_id", "key"]
660
+ }
661
+ },
662
+ "uniqueConstraints": {},
663
+ "policies": {},
664
+ "checkConstraints": {},
665
+ "isRLSEnabled": false
666
+ },
667
+ "mod_inventory.custody_periods": {
668
+ "name": "custody_periods",
669
+ "schema": "mod_inventory",
670
+ "columns": {
671
+ "id": {
672
+ "name": "id",
673
+ "type": "uuid",
674
+ "primaryKey": true,
675
+ "notNull": true,
676
+ "default": "uuidv7()"
677
+ },
678
+ "workspace_id": {
679
+ "name": "workspace_id",
680
+ "type": "uuid",
681
+ "primaryKey": false,
682
+ "notNull": true
683
+ },
684
+ "asset_id": {
685
+ "name": "asset_id",
686
+ "type": "uuid",
687
+ "primaryKey": false,
688
+ "notNull": true
689
+ },
690
+ "user_id": {
691
+ "name": "user_id",
692
+ "type": "uuid",
693
+ "primaryKey": false,
694
+ "notNull": true
695
+ },
696
+ "note": {
697
+ "name": "note",
698
+ "type": "text",
699
+ "primaryKey": false,
700
+ "notNull": false
701
+ },
702
+ "effective_from": {
703
+ "name": "effective_from",
704
+ "type": "timestamp with time zone",
705
+ "primaryKey": false,
706
+ "notNull": true,
707
+ "default": "now()"
708
+ },
709
+ "effective_to": {
710
+ "name": "effective_to",
711
+ "type": "timestamp with time zone",
712
+ "primaryKey": false,
713
+ "notNull": false
714
+ },
715
+ "created_by": {
716
+ "name": "created_by",
717
+ "type": "uuid",
718
+ "primaryKey": false,
719
+ "notNull": false
720
+ },
721
+ "created_at": {
722
+ "name": "created_at",
723
+ "type": "timestamp with time zone",
724
+ "primaryKey": false,
725
+ "notNull": true,
726
+ "default": "now()"
727
+ }
728
+ },
729
+ "indexes": {
730
+ "inventory_custody_ws_asset_idx": {
731
+ "name": "inventory_custody_ws_asset_idx",
732
+ "columns": [
733
+ {
734
+ "expression": "workspace_id",
735
+ "isExpression": false,
736
+ "asc": true,
737
+ "nulls": "last"
738
+ },
739
+ {
740
+ "expression": "asset_id",
741
+ "isExpression": false,
742
+ "asc": true,
743
+ "nulls": "last"
744
+ },
745
+ {
746
+ "expression": "effective_from",
747
+ "isExpression": false,
748
+ "asc": true,
749
+ "nulls": "last"
750
+ }
751
+ ],
752
+ "isUnique": false,
753
+ "concurrently": false,
754
+ "method": "btree",
755
+ "with": {}
756
+ }
757
+ },
758
+ "foreignKeys": {},
759
+ "compositePrimaryKeys": {},
760
+ "uniqueConstraints": {},
761
+ "policies": {},
762
+ "checkConstraints": {},
763
+ "isRLSEnabled": false
764
+ },
765
+ "mod_inventory.field_defs": {
766
+ "name": "field_defs",
767
+ "schema": "mod_inventory",
768
+ "columns": {
769
+ "id": {
770
+ "name": "id",
771
+ "type": "uuid",
772
+ "primaryKey": true,
773
+ "notNull": true,
774
+ "default": "uuidv7()"
775
+ },
776
+ "workspace_id": {
777
+ "name": "workspace_id",
778
+ "type": "uuid",
779
+ "primaryKey": false,
780
+ "notNull": true
781
+ },
782
+ "category_id": {
783
+ "name": "category_id",
784
+ "type": "uuid",
785
+ "primaryKey": false,
786
+ "notNull": false
787
+ },
788
+ "key": {
789
+ "name": "key",
790
+ "type": "text",
791
+ "primaryKey": false,
792
+ "notNull": true
793
+ },
794
+ "name": {
795
+ "name": "name",
796
+ "type": "text",
797
+ "primaryKey": false,
798
+ "notNull": true
799
+ },
800
+ "description": {
801
+ "name": "description",
802
+ "type": "text",
803
+ "primaryKey": false,
804
+ "notNull": false
805
+ },
806
+ "type": {
807
+ "name": "type",
808
+ "type": "text",
809
+ "primaryKey": false,
810
+ "notNull": true
811
+ },
812
+ "options": {
813
+ "name": "options",
814
+ "type": "jsonb",
815
+ "primaryKey": false,
816
+ "notNull": false
817
+ },
818
+ "default_value": {
819
+ "name": "default_value",
820
+ "type": "jsonb",
821
+ "primaryKey": false,
822
+ "notNull": false
823
+ },
824
+ "required": {
825
+ "name": "required",
826
+ "type": "boolean",
827
+ "primaryKey": false,
828
+ "notNull": true,
829
+ "default": false
830
+ },
831
+ "searchable": {
832
+ "name": "searchable",
833
+ "type": "boolean",
834
+ "primaryKey": false,
835
+ "notNull": true,
836
+ "default": false
837
+ },
838
+ "show_in_list": {
839
+ "name": "show_in_list",
840
+ "type": "boolean",
841
+ "primaryKey": false,
842
+ "notNull": true,
843
+ "default": false
844
+ },
845
+ "order": {
846
+ "name": "order",
847
+ "type": "integer",
848
+ "primaryKey": false,
849
+ "notNull": true,
850
+ "default": 0
851
+ },
852
+ "archived_at": {
853
+ "name": "archived_at",
854
+ "type": "timestamp with time zone",
855
+ "primaryKey": false,
856
+ "notNull": false
857
+ },
858
+ "created_at": {
859
+ "name": "created_at",
860
+ "type": "timestamp with time zone",
861
+ "primaryKey": false,
862
+ "notNull": true,
863
+ "default": "now()"
864
+ },
865
+ "updated_at": {
866
+ "name": "updated_at",
867
+ "type": "timestamp with time zone",
868
+ "primaryKey": false,
869
+ "notNull": true,
870
+ "default": "now()"
871
+ }
872
+ },
873
+ "indexes": {
874
+ "inventory_field_defs_ws_key_uq": {
875
+ "name": "inventory_field_defs_ws_key_uq",
876
+ "columns": [
877
+ {
878
+ "expression": "workspace_id",
879
+ "isExpression": false,
880
+ "asc": true,
881
+ "nulls": "last"
882
+ },
883
+ {
884
+ "expression": "key",
885
+ "isExpression": false,
886
+ "asc": true,
887
+ "nulls": "last"
888
+ }
889
+ ],
890
+ "isUnique": true,
891
+ "concurrently": false,
892
+ "method": "btree",
893
+ "with": {}
894
+ },
895
+ "inventory_field_defs_ws_idx": {
896
+ "name": "inventory_field_defs_ws_idx",
897
+ "columns": [
898
+ {
899
+ "expression": "workspace_id",
900
+ "isExpression": false,
901
+ "asc": true,
902
+ "nulls": "last"
903
+ },
904
+ {
905
+ "expression": "order",
906
+ "isExpression": false,
907
+ "asc": true,
908
+ "nulls": "last"
909
+ }
910
+ ],
911
+ "isUnique": false,
912
+ "concurrently": false,
913
+ "method": "btree",
914
+ "with": {}
915
+ }
916
+ },
917
+ "foreignKeys": {},
918
+ "compositePrimaryKeys": {},
919
+ "uniqueConstraints": {},
920
+ "policies": {},
921
+ "checkConstraints": {},
922
+ "isRLSEnabled": false
923
+ },
924
+ "mod_inventory.repairs": {
925
+ "name": "repairs",
926
+ "schema": "mod_inventory",
927
+ "columns": {
928
+ "id": {
929
+ "name": "id",
930
+ "type": "uuid",
931
+ "primaryKey": true,
932
+ "notNull": true,
933
+ "default": "uuidv7()"
934
+ },
935
+ "workspace_id": {
936
+ "name": "workspace_id",
937
+ "type": "uuid",
938
+ "primaryKey": false,
939
+ "notNull": true
940
+ },
941
+ "asset_id": {
942
+ "name": "asset_id",
943
+ "type": "uuid",
944
+ "primaryKey": false,
945
+ "notNull": true
946
+ },
947
+ "summary": {
948
+ "name": "summary",
949
+ "type": "text",
950
+ "primaryKey": false,
951
+ "notNull": true
952
+ },
953
+ "detail": {
954
+ "name": "detail",
955
+ "type": "text",
956
+ "primaryKey": false,
957
+ "notNull": false
958
+ },
959
+ "vendor": {
960
+ "name": "vendor",
961
+ "type": "text",
962
+ "primaryKey": false,
963
+ "notNull": false
964
+ },
965
+ "cost_minor": {
966
+ "name": "cost_minor",
967
+ "type": "integer",
968
+ "primaryKey": false,
969
+ "notNull": false
970
+ },
971
+ "currency": {
972
+ "name": "currency",
973
+ "type": "char(3)",
974
+ "primaryKey": false,
975
+ "notNull": false
976
+ },
977
+ "sent_on": {
978
+ "name": "sent_on",
979
+ "type": "date",
980
+ "primaryKey": false,
981
+ "notNull": true
982
+ },
983
+ "returned_on": {
984
+ "name": "returned_on",
985
+ "type": "date",
986
+ "primaryKey": false,
987
+ "notNull": false
988
+ },
989
+ "overdue_notified_at": {
990
+ "name": "overdue_notified_at",
991
+ "type": "timestamp with time zone",
992
+ "primaryKey": false,
993
+ "notNull": false
994
+ },
995
+ "created_by": {
996
+ "name": "created_by",
997
+ "type": "uuid",
998
+ "primaryKey": false,
999
+ "notNull": false
1000
+ },
1001
+ "created_at": {
1002
+ "name": "created_at",
1003
+ "type": "timestamp with time zone",
1004
+ "primaryKey": false,
1005
+ "notNull": true,
1006
+ "default": "now()"
1007
+ },
1008
+ "updated_at": {
1009
+ "name": "updated_at",
1010
+ "type": "timestamp with time zone",
1011
+ "primaryKey": false,
1012
+ "notNull": true,
1013
+ "default": "now()"
1014
+ }
1015
+ },
1016
+ "indexes": {
1017
+ "inventory_repairs_ws_asset_idx": {
1018
+ "name": "inventory_repairs_ws_asset_idx",
1019
+ "columns": [
1020
+ {
1021
+ "expression": "workspace_id",
1022
+ "isExpression": false,
1023
+ "asc": true,
1024
+ "nulls": "last"
1025
+ },
1026
+ {
1027
+ "expression": "asset_id",
1028
+ "isExpression": false,
1029
+ "asc": true,
1030
+ "nulls": "last"
1031
+ },
1032
+ {
1033
+ "expression": "sent_on",
1034
+ "isExpression": false,
1035
+ "asc": true,
1036
+ "nulls": "last"
1037
+ }
1038
+ ],
1039
+ "isUnique": false,
1040
+ "concurrently": false,
1041
+ "method": "btree",
1042
+ "with": {}
1043
+ },
1044
+ "inventory_repairs_ws_open_idx": {
1045
+ "name": "inventory_repairs_ws_open_idx",
1046
+ "columns": [
1047
+ {
1048
+ "expression": "workspace_id",
1049
+ "isExpression": false,
1050
+ "asc": true,
1051
+ "nulls": "last"
1052
+ },
1053
+ {
1054
+ "expression": "sent_on",
1055
+ "isExpression": false,
1056
+ "asc": true,
1057
+ "nulls": "last"
1058
+ }
1059
+ ],
1060
+ "isUnique": false,
1061
+ "where": "returned_on is null",
1062
+ "concurrently": false,
1063
+ "method": "btree",
1064
+ "with": {}
1065
+ },
1066
+ "inventory_repairs_one_open_uq": {
1067
+ "name": "inventory_repairs_one_open_uq",
1068
+ "columns": [
1069
+ {
1070
+ "expression": "asset_id",
1071
+ "isExpression": false,
1072
+ "asc": true,
1073
+ "nulls": "last"
1074
+ }
1075
+ ],
1076
+ "isUnique": true,
1077
+ "where": "returned_on is null",
1078
+ "concurrently": false,
1079
+ "method": "btree",
1080
+ "with": {}
1081
+ }
1082
+ },
1083
+ "foreignKeys": {},
1084
+ "compositePrimaryKeys": {},
1085
+ "uniqueConstraints": {},
1086
+ "policies": {},
1087
+ "checkConstraints": {},
1088
+ "isRLSEnabled": false
1089
+ },
1090
+ "mod_inventory.workspaces": {
1091
+ "name": "workspaces",
1092
+ "schema": "mod_inventory",
1093
+ "columns": {
1094
+ "workspace_id": {
1095
+ "name": "workspace_id",
1096
+ "type": "uuid",
1097
+ "primaryKey": true,
1098
+ "notNull": true
1099
+ },
1100
+ "created_at": {
1101
+ "name": "created_at",
1102
+ "type": "timestamp with time zone",
1103
+ "primaryKey": false,
1104
+ "notNull": true,
1105
+ "default": "now()"
1106
+ }
1107
+ },
1108
+ "indexes": {},
1109
+ "foreignKeys": {},
1110
+ "compositePrimaryKeys": {},
1111
+ "uniqueConstraints": {},
1112
+ "policies": {},
1113
+ "checkConstraints": {},
1114
+ "isRLSEnabled": false
1115
+ }
1116
+ },
1117
+ "enums": {},
1118
+ "schemas": {
1119
+ "mod_inventory": "mod_inventory"
1120
+ },
1121
+ "sequences": {},
1122
+ "roles": {},
1123
+ "policies": {},
1124
+ "views": {},
1125
+ "_meta": {
1126
+ "columns": {},
1127
+ "schemas": {},
1128
+ "tables": {}
1129
+ }
1130
+ }