@seedprotocol/sdk 0.3.14 → 0.3.16

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 (192) hide show
  1. package/dist/addModel.js +93 -0
  2. package/dist/addModel.js.map +1 -0
  3. package/dist/bin.js +8 -5
  4. package/dist/bin.js.map +1 -1
  5. package/dist/main.js +1 -0
  6. package/dist/main.js.map +1 -1
  7. package/dist/protos/seed.proto +97 -0
  8. package/dist/rpcServer.js +358 -0
  9. package/dist/rpcServer.js.map +1 -0
  10. package/dist/scripts/addModel.d.ts +3 -0
  11. package/dist/scripts/addModel.d.ts.map +1 -0
  12. package/dist/scripts/bin.d.ts.map +1 -1
  13. package/dist/scripts/rpcServer.cursor.d.ts +2 -0
  14. package/dist/scripts/rpcServer.cursor.d.ts.map +1 -0
  15. package/dist/scripts/rpcServer.d.ts +3 -0
  16. package/dist/scripts/rpcServer.d.ts.map +1 -0
  17. package/dist/scripts/vite.config.d.ts +3 -0
  18. package/dist/scripts/vite.config.d.ts.map +1 -0
  19. package/dist/seedSchema/AppStateSchema.ts +2 -2
  20. package/dist/seedSchema/ConfigSchema.ts +18 -14
  21. package/dist/seedSchema/MetadataSchema.ts +2 -1
  22. package/dist/seedSchema/ModelSchema.ts +3 -3
  23. package/dist/seedSchema/SeedSchema.ts +2 -1
  24. package/dist/seedSchema/VersionSchema.ts +2 -1
  25. package/dist/seedSchema/index.ts +1 -0
  26. package/dist/src/Item/BaseItem.d.ts +1 -1
  27. package/dist/src/Item/BaseItem.d.ts.map +1 -1
  28. package/dist/src/Item/BaseItem.js.map +1 -1
  29. package/dist/src/ItemProperty/BaseItemProperty.d.ts +55 -192
  30. package/dist/src/ItemProperty/BaseItemProperty.d.ts.map +1 -1
  31. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts +2 -1
  32. package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
  33. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +2 -1
  34. package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
  35. package/dist/src/ItemProperty/service/actors/initialize.d.ts +2 -1
  36. package/dist/src/ItemProperty/service/actors/initialize.d.ts.map +1 -1
  37. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts +2 -1
  38. package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
  39. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +2 -1
  40. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +1 -1
  41. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +1 -1
  42. package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -1
  43. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts +2 -2
  44. package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +1 -1
  45. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts +2 -2
  46. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
  47. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts +2 -2
  48. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
  49. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js +1 -0
  50. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js.map +1 -1
  51. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts +2 -2
  52. package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts.map +1 -1
  53. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts +2 -2
  54. package/dist/src/ItemProperty/service/actors/waitForDb.d.ts.map +1 -1
  55. package/dist/src/ItemProperty/service/propertyMachine.d.ts +60 -195
  56. package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
  57. package/dist/src/browser/helpers/FileManager.d.ts +1 -0
  58. package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
  59. package/dist/src/browser/helpers/FileManager.js +3 -0
  60. package/dist/src/browser/helpers/FileManager.js.map +1 -1
  61. package/dist/src/browser/react/services.js +1 -0
  62. package/dist/src/browser/react/services.js.map +1 -1
  63. package/dist/src/client/ClientManager.js +1 -0
  64. package/dist/src/client/ClientManager.js.map +1 -1
  65. package/dist/src/client/actors/initialize.d.ts.map +1 -1
  66. package/dist/src/client/actors/initialize.js +28 -14
  67. package/dist/src/client/actors/initialize.js.map +1 -1
  68. package/dist/src/client/actors/saveAppState.js +1 -0
  69. package/dist/src/client/actors/saveAppState.js.map +1 -1
  70. package/dist/src/client/index.d.ts +1 -1
  71. package/dist/src/client/index.d.ts.map +1 -1
  72. package/dist/src/db/Db/BaseDb.d.ts +1 -0
  73. package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
  74. package/dist/src/db/Db/BaseDb.js +3 -0
  75. package/dist/src/db/Db/BaseDb.js.map +1 -1
  76. package/dist/src/db/read/getExistingItem.js +1 -0
  77. package/dist/src/db/read/getExistingItem.js.map +1 -1
  78. package/dist/src/db/read/getItemData.js +1 -0
  79. package/dist/src/db/read/getItemData.js.map +1 -1
  80. package/dist/src/db/read/getItemProperties.js +1 -0
  81. package/dist/src/db/read/getItemProperties.js.map +1 -1
  82. package/dist/src/db/read/getItemProperty.js +1 -0
  83. package/dist/src/db/read/getItemProperty.js.map +1 -1
  84. package/dist/src/db/read/getItems.js +1 -0
  85. package/dist/src/db/read/getItems.js.map +1 -1
  86. package/dist/src/db/read/getMetadata.js +1 -0
  87. package/dist/src/db/read/getMetadata.js.map +1 -1
  88. package/dist/src/db/read/getModelSchemas.js +1 -0
  89. package/dist/src/db/read/getModelSchemas.js.map +1 -1
  90. package/dist/src/db/read/getModels.js +1 -0
  91. package/dist/src/db/read/getModels.js.map +1 -1
  92. package/dist/src/db/read/getPropertyData.js +1 -0
  93. package/dist/src/db/read/getPropertyData.js.map +1 -1
  94. package/dist/src/db/read/getRelationValueData.js +1 -0
  95. package/dist/src/db/read/getRelationValueData.js.map +1 -1
  96. package/dist/src/db/read/getSeedData.js +1 -0
  97. package/dist/src/db/read/getSeedData.js.map +1 -1
  98. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js +1 -0
  99. package/dist/src/db/read/getStorageTransactionIdForSeedUid.js.map +1 -1
  100. package/dist/src/db/read/getVersionData.js +1 -0
  101. package/dist/src/db/read/getVersionData.js.map +1 -1
  102. package/dist/src/db/read/subqueries/metadataLatest.js +1 -0
  103. package/dist/src/db/read/subqueries/metadataLatest.js.map +1 -1
  104. package/dist/src/db/read/subqueries/versionData.js +1 -0
  105. package/dist/src/db/read/subqueries/versionData.js.map +1 -1
  106. package/dist/src/db/write/createMetadata.js +1 -0
  107. package/dist/src/db/write/createMetadata.js.map +1 -1
  108. package/dist/src/db/write/createSeed.js +1 -0
  109. package/dist/src/db/write/createSeed.js.map +1 -1
  110. package/dist/src/db/write/createSeeds.js +1 -0
  111. package/dist/src/db/write/createSeeds.js.map +1 -1
  112. package/dist/src/db/write/createVersion.js +1 -0
  113. package/dist/src/db/write/createVersion.js.map +1 -1
  114. package/dist/src/db/write/deleteItem.js +1 -0
  115. package/dist/src/db/write/deleteItem.js.map +1 -1
  116. package/dist/src/db/write/saveAppState.js +1 -0
  117. package/dist/src/db/write/saveAppState.js.map +1 -1
  118. package/dist/src/db/write/saveMetadata.js +1 -0
  119. package/dist/src/db/write/saveMetadata.js.map +1 -1
  120. package/dist/src/db/write/updateItemPropertyValue.js +1 -0
  121. package/dist/src/db/write/updateItemPropertyValue.js.map +1 -1
  122. package/dist/src/db/write/updateMetadata.js +1 -0
  123. package/dist/src/db/write/updateMetadata.js.map +1 -1
  124. package/dist/src/events/files/download.js +1 -0
  125. package/dist/src/events/files/download.js.map +1 -1
  126. package/dist/src/events/item/syncDbWithEas.js +1 -0
  127. package/dist/src/events/item/syncDbWithEas.js.map +1 -1
  128. package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -1
  129. package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
  130. package/dist/src/helpers/FileManager/BaseFileManager.js +3 -0
  131. package/dist/src/helpers/FileManager/BaseFileManager.js.map +1 -1
  132. package/dist/src/helpers/db.js +1 -0
  133. package/dist/src/helpers/db.js.map +1 -1
  134. package/dist/src/helpers/environment.js +6 -1
  135. package/dist/src/helpers/environment.js.map +1 -1
  136. package/dist/src/helpers/index.d.ts.map +1 -1
  137. package/dist/src/helpers/index.js.map +1 -1
  138. package/dist/src/interfaces/IItem.d.ts +1 -1
  139. package/dist/src/interfaces/IItem.d.ts.map +1 -1
  140. package/dist/src/node/Item/Item.js +11 -0
  141. package/dist/src/node/Item/Item.js.map +1 -0
  142. package/dist/src/node/ItemProperty/ItemProperty.js +10 -0
  143. package/dist/src/node/ItemProperty/ItemProperty.js.map +1 -0
  144. package/dist/src/node/codegen/drizzle.js +36 -2
  145. package/dist/src/node/codegen/drizzle.js.map +1 -1
  146. package/dist/src/node/db/Db.d.ts.map +1 -1
  147. package/dist/src/node/db/Db.js +64 -0
  148. package/dist/src/node/db/Db.js.map +1 -0
  149. package/dist/src/node/helpers/FileManager.d.ts +1 -0
  150. package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
  151. package/dist/src/node/helpers/FileManager.js +53 -0
  152. package/dist/src/node/helpers/FileManager.js.map +1 -0
  153. package/dist/src/seedSchema/AppStateSchema.d.ts +2 -1
  154. package/dist/src/seedSchema/AppStateSchema.d.ts.map +1 -1
  155. package/dist/src/seedSchema/AppStateSchema.js.map +1 -1
  156. package/dist/src/seedSchema/ConfigSchema.d.ts +2 -0
  157. package/dist/src/seedSchema/ConfigSchema.d.ts.map +1 -1
  158. package/dist/src/seedSchema/ConfigSchema.js +5 -8
  159. package/dist/src/seedSchema/ConfigSchema.js.map +1 -1
  160. package/dist/src/seedSchema/MetadataSchema.d.ts +2 -1
  161. package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
  162. package/dist/src/seedSchema/MetadataSchema.js.map +1 -1
  163. package/dist/src/seedSchema/ModelSchema.d.ts +3 -2
  164. package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
  165. package/dist/src/seedSchema/ModelSchema.js.map +1 -1
  166. package/dist/src/seedSchema/SeedSchema.d.ts +2 -1
  167. package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
  168. package/dist/src/seedSchema/SeedSchema.js.map +1 -1
  169. package/dist/src/seedSchema/VersionSchema.d.ts +2 -1
  170. package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
  171. package/dist/src/seedSchema/VersionSchema.js.map +1 -1
  172. package/dist/src/seedSchema/index.d.ts +1 -0
  173. package/dist/src/seedSchema/index.d.ts.map +1 -1
  174. package/dist/src/services/allItems/actors/fetchRelatedItems.js +1 -0
  175. package/dist/src/services/allItems/actors/fetchRelatedItems.js.map +1 -1
  176. package/dist/src/services/allItems/actors/initialize.js +1 -0
  177. package/dist/src/services/allItems/actors/initialize.js.map +1 -1
  178. package/dist/src/services/global/actors/addModelsToDb.js +1 -0
  179. package/dist/src/services/global/actors/addModelsToDb.js.map +1 -1
  180. package/dist/src/services/global/actors/initialize.js +1 -0
  181. package/dist/src/services/global/actors/initialize.js.map +1 -1
  182. package/dist/src/services/internal/actors/saveConfig.d.ts.map +1 -1
  183. package/dist/src/services/internal/actors/saveConfig.js +16 -29
  184. package/dist/src/services/internal/actors/saveConfig.js.map +1 -1
  185. package/dist/src/services/internal/helpers.d.ts.map +1 -1
  186. package/dist/src/services/internal/helpers.js +2 -2
  187. package/dist/src/services/internal/helpers.js.map +1 -1
  188. package/dist/src/services/publish/actors/preparePublishRequestData.js +1 -0
  189. package/dist/src/services/publish/actors/preparePublishRequestData.js.map +1 -1
  190. package/dist/src/types/item.d.ts +9 -8
  191. package/dist/src/types/item.d.ts.map +1 -1
  192. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"getSeedData.js","sources":["../../../../../src/db/read/getSeedData.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds, SeedType } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\n\ntype GetSeedDataProps = {\n seedLocalId?: string\n seedUid?: string\n}\n\ntype GetSeedData = (props: GetSeedDataProps) => Promise<SeedType | undefined>\n\nexport const getSeedData: GetSeedData = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n let query\n\n const queryBase = appDb.select().from(seeds)\n\n if (seedLocalId) {\n query = queryBase.where(eq(seeds.localId, seedLocalId))\n }\n\n if (seedUid) {\n query = queryBase.where(eq(seeds.uid, seedUid))\n }\n\n const rows = await query\n\n if (!rows || !rows.length) {\n return\n }\n\n return rows[0]\n}\n"],"names":[],"mappings":";;;;;;;;;AAWO,MAAM,WAAW,GAAgB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AACzE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,IAAI,KAAK;IAET,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAE5C,IAAI,WAAW,EAAE;AACf,QAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;IAGzD,IAAI,OAAO,EAAE;AACX,QAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;AAGjD,IAAA,MAAM,IAAI,GAAG,MAAM,KAAK;IAExB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACzB;;AAGF,IAAA,OAAO,IAAI,CAAC,CAAC,CAAC;AAChB;;;;"}
1
+ {"version":3,"file":"getSeedData.js","sources":["../../../../../src/db/read/getSeedData.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds, SeedType } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\n\ntype GetSeedDataProps = {\n seedLocalId?: string\n seedUid?: string\n}\n\ntype GetSeedData = (props: GetSeedDataProps) => Promise<SeedType | undefined>\n\nexport const getSeedData: GetSeedData = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n let query\n\n const queryBase = appDb.select().from(seeds)\n\n if (seedLocalId) {\n query = queryBase.where(eq(seeds.localId, seedLocalId))\n }\n\n if (seedUid) {\n query = queryBase.where(eq(seeds.uid, seedUid))\n }\n\n const rows = await query\n\n if (!rows || !rows.length) {\n return\n }\n\n return rows[0]\n}\n"],"names":[],"mappings":";;;;;;;;;;AAWO,MAAM,WAAW,GAAgB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AACzE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,IAAI,KAAK;IAET,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;IAE5C,IAAI,WAAW,EAAE;AACf,QAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;IAGzD,IAAI,OAAO,EAAE;AACX,QAAA,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;;AAGjD,IAAA,MAAM,IAAI,GAAG,MAAM,KAAK;IAExB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACzB;;AAGF,IAAA,OAAO,IAAI,CAAC,CAAC,CAAC;AAChB;;;;"}
@@ -4,6 +4,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { and, eq } from 'drizzle-orm';
8
9
  import { BaseDb } from '../Db/BaseDb.js';
9
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"getStorageTransactionIdForSeedUid.js","sources":["../../../../../src/db/read/getStorageTransactionIdForSeedUid.ts"],"sourcesContent":["import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} "],"names":[],"mappings":";;;;;;;;;AAIA,MAAM,6BAA6B,GAAG,IAAI,GAAG,EAAkB;MAMlD,iCAAiC,GAAG,OAC/C,OAAe,KACgB;AAC/B,IAAA,IAAI,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC9C,QAAA,OAAO,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC;;AAGnD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,OAAO,IAAI,MAAM;AACpB,SAAA,MAAM,CAAC;QACN,oBAAoB,EAAE,QAAQ,CAAC,aAAa;KAC7C;SACA,IAAI,CAAC,QAAQ;SACb,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7B,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAClD,CACF,CAAmC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC;;AAGF,IAAA,6BAA6B,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC3E,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB;AACxC;;;;"}
1
+ {"version":3,"file":"getStorageTransactionIdForSeedUid.js","sources":["../../../../../src/db/read/getStorageTransactionIdForSeedUid.ts"],"sourcesContent":["import { metadata } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nconst seedUidToStorageTransactionId = new Map<string, string>()\n\ntype GetStorageTransactionIdResults = {\n storageTransactionId: string\n}[]\n\nexport const getStorageTransactionIdForSeedUid = async (\n seedUid: string,\n): Promise<string | undefined> => {\n if (seedUidToStorageTransactionId.has(seedUid)) {\n return seedUidToStorageTransactionId.get(seedUid)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const results = (await appDb\n .select({\n storageTransactionId: metadata.propertyValue,\n })\n .from(metadata)\n .where(\n and(\n eq(metadata.seedUid, seedUid),\n eq(metadata.propertyName, 'storageTransactionId'),\n ),\n )) as GetStorageTransactionIdResults\n\n if (!results || results.length === 0) {\n return\n }\n\n seedUidToStorageTransactionId.set(seedUid, results[0].storageTransactionId)\n return results[0].storageTransactionId\n} "],"names":[],"mappings":";;;;;;;;;;AAIA,MAAM,6BAA6B,GAAG,IAAI,GAAG,EAAkB;MAMlD,iCAAiC,GAAG,OAC/C,OAAe,KACgB;AAC/B,IAAA,IAAI,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC9C,QAAA,OAAO,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC;;AAGnD,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,OAAO,IAAI,MAAM;AACpB,SAAA,MAAM,CAAC;QACN,oBAAoB,EAAE,QAAQ,CAAC,aAAa;KAC7C;SACA,IAAI,CAAC,QAAQ;SACb,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAC7B,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAClD,CACF,CAAmC;IAEtC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACpC;;AAGF,IAAA,6BAA6B,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AAC3E,IAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB;AACxC;;;;"}
@@ -4,6 +4,7 @@ import '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { eq, and } from 'drizzle-orm';
8
9
  import { BaseDb } from '../Db/BaseDb.js';
9
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"getVersionData.js","sources":["../../../../../src/db/read/getVersionData.ts"],"sourcesContent":["import { versions, VersionsType } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype GetVersionDataProps = {\n localId?: string | null\n uid?: string\n seedLocalId?: string\n}\n\ntype GetVersionData = (\n props: GetVersionDataProps,\n) => Promise<VersionsType | undefined>\n\nexport const getVersionData: GetVersionData = async ({\n localId,\n seedLocalId,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (seedLocalId) {\n whereClauses.push(eq(versions.localId, seedLocalId))\n }\n\n if (localId) {\n whereClauses.push(eq(versions.localId, localId))\n }\n\n if (uid) {\n whereClauses.push(eq(versions.uid, uid))\n }\n\n const queryRows = await appDb\n .select()\n .from(versions)\n .where(and(...whereClauses))\n\n if (!queryRows || !queryRows.length) {\n return\n }\n\n return queryRows[0]\n}\n"],"names":[],"mappings":";;;;;;;;;AAcO,MAAM,cAAc,GAAmB,OAAO,EACnD,OAAO,EACP,WAAW,EACX,GAAG,GACJ,KAAI;AACH,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAG,EAAE;IAEvB,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;IAGtD,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;IAGlD,IAAI,GAAG,EAAE;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;IAG1C,MAAM,SAAS,GAAG,MAAM;AACrB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;AACb,SAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAE9B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;QACnC;;AAGF,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC;AACrB;;;;"}
1
+ {"version":3,"file":"getVersionData.js","sources":["../../../../../src/db/read/getVersionData.ts"],"sourcesContent":["import { versions, VersionsType } from '@/seedSchema'\nimport { and, eq } from 'drizzle-orm'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype GetVersionDataProps = {\n localId?: string | null\n uid?: string\n seedLocalId?: string\n}\n\ntype GetVersionData = (\n props: GetVersionDataProps,\n) => Promise<VersionsType | undefined>\n\nexport const getVersionData: GetVersionData = async ({\n localId,\n seedLocalId,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses = []\n\n if (seedLocalId) {\n whereClauses.push(eq(versions.localId, seedLocalId))\n }\n\n if (localId) {\n whereClauses.push(eq(versions.localId, localId))\n }\n\n if (uid) {\n whereClauses.push(eq(versions.uid, uid))\n }\n\n const queryRows = await appDb\n .select()\n .from(versions)\n .where(and(...whereClauses))\n\n if (!queryRows || !queryRows.length) {\n return\n }\n\n return queryRows[0]\n}\n"],"names":[],"mappings":";;;;;;;;;;AAcO,MAAM,cAAc,GAAmB,OAAO,EACnD,OAAO,EACP,WAAW,EACX,GAAG,GACJ,KAAI;AACH,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAG,EAAE;IAEvB,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;IAGtD,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;IAGlD,IAAI,GAAG,EAAE;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;;IAG1C,MAAM,SAAS,GAAG,MAAM;AACrB,SAAA,MAAM;SACN,IAAI,CAAC,QAAQ;AACb,SAAA,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IAE9B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;QACnC;;AAGF,IAAA,OAAO,SAAS,CAAC,CAAC,CAAC;AACrB;;;;"}
@@ -6,6 +6,7 @@ import { metadata } from '../../../seedSchema/MetadataSchema.js';
6
6
  import '../../../seedSchema/AppStateSchema.js';
7
7
  import '../../../seedSchema/ModelSchema.js';
8
8
  import '../../../seedSchema/ModelUidSchema.js';
9
+ import '../../../seedSchema/ConfigSchema.js';
9
10
 
10
11
  const getMetadataLatest = ({ seedLocalId, seedUid }) => {
11
12
  const appDb = BaseDb.getAppDb();
@@ -1 +1 @@
1
- {"version":3,"file":"metadataLatest.js","sources":["../../../../../../src/db/read/subqueries/metadataLatest.ts"],"sourcesContent":["import { and, eq, getTableColumns, or, SQL, sql } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata } from '@/seedSchema'\n\nexport const getMetadataLatest = ({seedLocalId, seedUid}: {seedLocalId?: string, seedUid?: string}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: SQL[] = []\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n const metadataColumns = getTableColumns(metadata)\n\n return appDb.$with('metadataLatest').as(\n appDb\n .select({\n ...metadataColumns,\n rowNum: sql.raw(`\n ROW_NUMBER() OVER (\n PARTITION BY property_name \n ORDER BY COALESCE(created_at, attestation_created_at) DESC\n )\n `).as('rowNum')\n })\n .from(metadata)\n .where(and(...whereClauses))\n )\n}\n"],"names":[],"mappings":";;;;;;;;;AAIa,MAAA,iBAAiB,GAAG,CAAC,EAAC,WAAW,EAAE,OAAO,EAA2C,KAAI;AACpG,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAU,EAAE;IAE9B,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;;IAG1D,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;AAGlD,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC;IAEjD,OAAO,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,CACrC;AACG,SAAA,MAAM,CAAC;AACN,QAAA,GAAG,eAAe;AAClB,QAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;;;;;AAKb,UAAA,CAAA,CAAC,CAAC,EAAE,CAAC,QAAQ;KACjB;SACA,IAAI,CAAC,QAAQ;SACb,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAC/B;AACH;;;;"}
1
+ {"version":3,"file":"metadataLatest.js","sources":["../../../../../../src/db/read/subqueries/metadataLatest.ts"],"sourcesContent":["import { and, eq, getTableColumns, or, SQL, sql } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { metadata } from '@/seedSchema'\n\nexport const getMetadataLatest = ({seedLocalId, seedUid}: {seedLocalId?: string, seedUid?: string}) => {\n const appDb = BaseDb.getAppDb()\n\n const whereClauses: SQL[] = []\n\n if (seedLocalId) {\n whereClauses.push(eq(metadata.seedLocalId, seedLocalId))\n }\n\n if (seedUid) {\n whereClauses.push(eq(metadata.seedUid, seedUid))\n }\n\n const metadataColumns = getTableColumns(metadata)\n\n return appDb.$with('metadataLatest').as(\n appDb\n .select({\n ...metadataColumns,\n rowNum: sql.raw(`\n ROW_NUMBER() OVER (\n PARTITION BY property_name \n ORDER BY COALESCE(created_at, attestation_created_at) DESC\n )\n `).as('rowNum')\n })\n .from(metadata)\n .where(and(...whereClauses))\n )\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIa,MAAA,iBAAiB,GAAG,CAAC,EAAC,WAAW,EAAE,OAAO,EAA2C,KAAI;AACpG,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,YAAY,GAAU,EAAE;IAE9B,IAAI,WAAW,EAAE;AACf,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;;IAG1D,IAAI,OAAO,EAAE;AACX,QAAA,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;AAGlD,IAAA,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC;IAEjD,OAAO,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAAE,CACrC;AACG,SAAA,MAAM,CAAC;AACN,QAAA,GAAG,eAAe;AAClB,QAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;;;;;AAKb,UAAA,CAAA,CAAC,CAAC,EAAE,CAAC,QAAQ;KACjB;SACA,IAAI,CAAC,QAAQ;SACb,KAAK,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAC/B;AACH;;;;"}
@@ -4,6 +4,7 @@ import '../../../seedSchema/MetadataSchema.js';
4
4
  import '../../../seedSchema/AppStateSchema.js';
5
5
  import '../../../seedSchema/ModelSchema.js';
6
6
  import '../../../seedSchema/ModelUidSchema.js';
7
+ import '../../../seedSchema/ConfigSchema.js';
7
8
  import { max, count } from 'drizzle-orm';
8
9
  import { BaseDb } from '../../Db/BaseDb.js';
9
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"versionData.js","sources":["../../../../../../src/db/read/subqueries/versionData.ts"],"sourcesContent":["import { versions } from '@/seedSchema'\nimport { count, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getVersionData = () => {\n const appDb = BaseDb.getAppDb()\n\n return appDb.$with('versionData').as(\n appDb\n .select({\n seedLocalId: versions.seedLocalId,\n seedUid: versions.seedUid,\n latestVersionUid: versions.uid,\n latestVersionLocalId: versions.localId,\n versionsCount: count(versions.localId).as('versionsCount'),\n lastVersionPublishedAt: max(versions.attestationCreatedAt).as(\n 'lastVersionPublishedAt',\n ),\n lastLocalUpdateAt: max(versions.createdAt).as('lastLocalUpdateAt'),\n })\n .from(versions)\n .groupBy(versions.seedLocalId),\n )\n}\n"],"names":[],"mappings":";;;;;;;;;AAIO,MAAM,cAAc,GAAG,MAAK;AACjC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,OAAO,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAClC;AACG,SAAA,MAAM,CAAC;QACN,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE,QAAQ,CAAC,GAAG;QAC9B,oBAAoB,EAAE,QAAQ,CAAC,OAAO;QACtC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC;QAC1D,sBAAsB,EAAE,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAC3D,wBAAwB,CACzB;QACD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC;KACnE;SACA,IAAI,CAAC,QAAQ;AACb,SAAA,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CACjC;AACH;;;;"}
1
+ {"version":3,"file":"versionData.js","sources":["../../../../../../src/db/read/subqueries/versionData.ts"],"sourcesContent":["import { versions } from '@/seedSchema'\nimport { count, max } from 'drizzle-orm'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\nexport const getVersionData = () => {\n const appDb = BaseDb.getAppDb()\n\n return appDb.$with('versionData').as(\n appDb\n .select({\n seedLocalId: versions.seedLocalId,\n seedUid: versions.seedUid,\n latestVersionUid: versions.uid,\n latestVersionLocalId: versions.localId,\n versionsCount: count(versions.localId).as('versionsCount'),\n lastVersionPublishedAt: max(versions.attestationCreatedAt).as(\n 'lastVersionPublishedAt',\n ),\n lastLocalUpdateAt: max(versions.createdAt).as('lastLocalUpdateAt'),\n })\n .from(versions)\n .groupBy(versions.seedLocalId),\n )\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIO,MAAM,cAAc,GAAG,MAAK;AACjC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,OAAO,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAClC;AACG,SAAA,MAAM,CAAC;QACN,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,gBAAgB,EAAE,QAAQ,CAAC,GAAG;QAC9B,oBAAoB,EAAE,QAAQ,CAAC,OAAO;QACtC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC;QAC1D,sBAAsB,EAAE,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAC3D,wBAAwB,CACzB;QACD,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC;KACnE;SACA,IAAI,CAAC,QAAQ;AACb,SAAA,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CACjC;AACH;;;;"}
@@ -4,6 +4,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { generateId } from '../../helpers/index.js';
8
9
  import { BaseDb } from '../Db/BaseDb.js';
9
10
  import { GET_SCHEMA_BY_NAME } from '../../Item/queries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"createMetadata.js","sources":["../../../../../src/db/write/createMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseEasClient, BaseQueryClient, generateId } from '@/helpers'\nimport { PropertyType } from '@/types'\nimport { BaseDb } from '../Db/BaseDb'\nimport { GET_SCHEMA_BY_NAME, } from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\n\n\ntype CreateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const createMetadata: CreateMetadata = async (\n metadataValues,\n propertyRecordSchema?,\n) => {\n const appDb = BaseDb.getAppDb()\n\n metadataValues.localId = generateId()\n\n if (!metadataValues.modelType && metadataValues.modelName) {\n metadataValues.modelType = toSnakeCase(metadataValues.modelName)\n }\n\n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n // if (\n // propertyRecordSchema &&\n // propertyRecordSchema.localStorageDir &&\n // isItemStorage\n // ) {\n // const filename = `${metadataValues.seedUid || metadataValues.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n // const filePath = path.join(propertyRecordSchema.localStorageDir, filename)\n // await fs.promises.writeFile(filePath, metadataValues.propertyValue)\n // metadataValues.propertyValue = filename\n // metadataValues.refValueType = 'file'\n // }\n\n if (!isItemStorage && !metadataValues.schemaUid && propertyRecordSchema) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n return appDb\n .insert(metadata)\n .values({\n ...metadataValues,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n .returning()\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAea,MAAA,cAAc,GAAmB,OAC5C,cAAc,EACd,oBAAqB,KACnB;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,cAAc,CAAC,OAAO,GAAG,UAAU,EAAE;IAErC,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,EAAE;QACzD,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;;IAGlE,MAAM,aAAa,GAAG,oBAAoB,IAAI,oBAAoB,CAAC,WAAW,KAAK,aAAa;;;;;;;;;;;;IAchG,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,oBAAoB,EAAE;AACvE,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE;AACpD,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE;QAE9C,MAAM,WAAW,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,GAAG;QAE1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC;AAEtE,QAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;AAC/C,YAAA,QAAQ,EAAE,CAAC,CAAA,eAAA,EAAkB,cAAc,CAAC,YAAY,EAAE,CAAC;YAC3D,OAAO,EAAE,YACP,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACpC,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,qBAAqB,CAAE,CAAA;AAClD,qBAAA;AACF,iBAAA;aACF,CAAC;AACL,SAAA,CAAC;QAEF,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;;;AAKxD,IAAA,OAAO;SACJ,MAAM,CAAC,QAAQ;AACf,SAAA,MAAM,CAAC;AACN,QAAA,GAAG,cAAc;AACjB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB;AACA,SAAA,SAAS,EAAE;AAChB;;;;"}
1
+ {"version":3,"file":"createMetadata.js","sources":["../../../../../src/db/write/createMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseEasClient, BaseQueryClient, generateId } from '@/helpers'\nimport { PropertyType } from '@/types'\nimport { BaseDb } from '../Db/BaseDb'\nimport { GET_SCHEMA_BY_NAME, } from '@/Item/queries'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\n\n\ntype CreateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const createMetadata: CreateMetadata = async (\n metadataValues,\n propertyRecordSchema?,\n) => {\n const appDb = BaseDb.getAppDb()\n\n metadataValues.localId = generateId()\n\n if (!metadataValues.modelType && metadataValues.modelName) {\n metadataValues.modelType = toSnakeCase(metadataValues.modelName)\n }\n\n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n // if (\n // propertyRecordSchema &&\n // propertyRecordSchema.localStorageDir &&\n // isItemStorage\n // ) {\n // const filename = `${metadataValues.seedUid || metadataValues.seedLocalId}${propertyRecordSchema.filenameSuffix}`\n // const filePath = path.join(propertyRecordSchema.localStorageDir, filename)\n // await fs.promises.writeFile(filePath, metadataValues.propertyValue)\n // metadataValues.propertyValue = filename\n // metadataValues.refValueType = 'file'\n // }\n\n if (!isItemStorage && !metadataValues.schemaUid && propertyRecordSchema) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n return appDb\n .insert(metadata)\n .values({\n ...metadataValues,\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n .returning()\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAea,MAAA,cAAc,GAAmB,OAC5C,cAAc,EACd,oBAAqB,KACnB;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,cAAc,CAAC,OAAO,GAAG,UAAU,EAAE;IAErC,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,SAAS,EAAE;QACzD,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC;;IAGlE,MAAM,aAAa,GAAG,oBAAoB,IAAI,oBAAoB,CAAC,WAAW,KAAK,aAAa;;;;;;;;;;;;IAchG,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,oBAAoB,EAAE;AACvE,QAAA,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE;AACpD,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE;QAE9C,MAAM,WAAW,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,GAAG;QAE1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC;AAEtE,QAAA,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC;AAC/C,YAAA,QAAQ,EAAE,CAAC,CAAA,eAAA,EAAkB,cAAc,CAAC,YAAY,EAAE,CAAC;YAC3D,OAAO,EAAE,YACP,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE;AACpC,gBAAA,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,qBAAqB,CAAE,CAAA;AAClD,qBAAA;AACF,iBAAA;aACF,CAAC;AACL,SAAA,CAAC;QAEF,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;;;AAKxD,IAAA,OAAO;SACJ,MAAM,CAAC,QAAQ;AACf,SAAA,MAAM,CAAC;AACN,QAAA,GAAG,cAAc;AACjB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB;AACA,SAAA,SAAS,EAAE;AAChB;;;;"}
@@ -5,6 +5,7 @@ import '../../seedSchema/MetadataSchema.js';
5
5
  import '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
  import { BaseDb } from '../Db/BaseDb.js';
9
10
  import { getSchemaUidForModel } from '../read/getSchemaUidForModel.js';
10
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"createSeed.js","sources":["../../../../../src/db/write/createSeed.ts"],"sourcesContent":["import { generateId } from '@/helpers'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\n\ntype CreateSeedProps = {\n type: string\n seedUid?: string\n}\n\nexport const createSeed = async ({ type, seedUid }: CreateSeedProps): Promise<string> => {\n const schemaUid = await getSchemaUidForModel(type)\n\n if (!schemaUid) {\n throw new Error(`No schema found for model type: ${type}`)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const newSeedLocalId = generateId()\n\n await appDb.insert(seeds).values({\n localId: newSeedLocalId,\n type,\n uid: seedUid,\n createdAt: Date.now(),\n schemaUid,\n })\n\n return newSeedLocalId\n} "],"names":[],"mappings":";;;;;;;;;;AAUO,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAmB,KAAqB;AACtF,IAAA,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAA,CAAE,CAAC;;AAG5D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,cAAc,GAAG,UAAU,EAAE;IAEnC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAA,OAAO,EAAE,cAAc;QACvB,IAAI;AACJ,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS;AACV,KAAA,CAAC;AAEF,IAAA,OAAO,cAAc;AACvB;;;;"}
1
+ {"version":3,"file":"createSeed.js","sources":["../../../../../src/db/write/createSeed.ts"],"sourcesContent":["import { generateId } from '@/helpers'\nimport { seeds } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getSchemaUidForModel } from '@/db/read/getSchemaUidForModel'\n\ntype CreateSeedProps = {\n type: string\n seedUid?: string\n}\n\nexport const createSeed = async ({ type, seedUid }: CreateSeedProps): Promise<string> => {\n const schemaUid = await getSchemaUidForModel(type)\n\n if (!schemaUid) {\n throw new Error(`No schema found for model type: ${type}`)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const newSeedLocalId = generateId()\n\n await appDb.insert(seeds).values({\n localId: newSeedLocalId,\n type,\n uid: seedUid,\n createdAt: Date.now(),\n schemaUid,\n })\n\n return newSeedLocalId\n} "],"names":[],"mappings":";;;;;;;;;;;AAUO,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAmB,KAAqB;AACtF,IAAA,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;IAElD,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAA,CAAE,CAAC;;AAG5D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,cAAc,GAAG,UAAU,EAAE;IAEnC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC/B,QAAA,OAAO,EAAE,cAAc;QACvB,IAAI;AACJ,QAAA,GAAG,EAAE,OAAO;AACZ,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS;AACV,KAAA,CAAC;AAEF,IAAA,OAAO,cAAc;AACvB;;;;"}
@@ -4,6 +4,7 @@ import '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { BaseDb } from '../Db/BaseDb.js';
8
9
 
9
10
  const createSeeds = async (newSeeds) => {
@@ -1 +1 @@
1
- {"version":3,"file":"createSeeds.js","sources":["../../../../../src/db/write/createSeeds.ts"],"sourcesContent":["import { seeds, SeedType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\ntype CreateSeeds = (newSeeds: Partial<SeedType>[]) => Promise<string[]>\n\nexport const createSeeds: CreateSeeds = async (\n newSeeds: Partial<SeedType>[],\n) => {\n const appDb = BaseDb.getAppDb()\n\n const results = await appDb\n .insert(seeds)\n .values(newSeeds)\n .returning({ uid: seeds.uid })\n\n const newUids = results.reduce((acc, result) => {\n if (result.uid) {\n acc.push(result.uid)\n }\n return acc\n }, [] as string[])\n\n return newUids\n}\n"],"names":[],"mappings":";;;;;;;;MAKa,WAAW,GAAgB,OACtC,QAA6B,KAC3B;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,KAAK;SACZ,MAAM,CAAC,QAAQ;SACf,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AAC7C,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACd,YAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAEtB,QAAA,OAAO,GAAG;KACX,EAAE,EAAc,CAAC;AAElB,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"createSeeds.js","sources":["../../../../../src/db/write/createSeeds.ts"],"sourcesContent":["import { seeds, SeedType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\n\ntype CreateSeeds = (newSeeds: Partial<SeedType>[]) => Promise<string[]>\n\nexport const createSeeds: CreateSeeds = async (\n newSeeds: Partial<SeedType>[],\n) => {\n const appDb = BaseDb.getAppDb()\n\n const results = await appDb\n .insert(seeds)\n .values(newSeeds)\n .returning({ uid: seeds.uid })\n\n const newUids = results.reduce((acc, result) => {\n if (result.uid) {\n acc.push(result.uid)\n }\n return acc\n }, [] as string[])\n\n return newUids\n}\n"],"names":[],"mappings":";;;;;;;;;MAKa,WAAW,GAAgB,OACtC,QAA6B,KAC3B;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,KAAK;SACZ,MAAM,CAAC,QAAQ;SACf,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AAC7C,QAAA,IAAI,MAAM,CAAC,GAAG,EAAE;AACd,YAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAEtB,QAAA,OAAO,GAAG;KACX,EAAE,EAAc,CAAC;AAElB,IAAA,OAAO,OAAO;AAChB;;;;"}
@@ -5,6 +5,7 @@ import '../../seedSchema/MetadataSchema.js';
5
5
  import '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
  import { BaseDb } from '../Db/BaseDb.js';
9
10
 
10
11
  const createVersion = async ({ seedLocalId, seedUid, seedType, uid, }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"createVersion.js","sources":["../../../../../src/db/write/createVersion.ts"],"sourcesContent":["import { generateId } from '@/helpers'\nimport { versions } from '@/seedSchema'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype CreateVersionProps = {\n seedLocalId?: string\n seedUid?: string\n seedType?: string\n uid?: string\n}\ntype CreateVersion = (props: CreateVersionProps) => Promise<string>\n\nexport const createVersion: CreateVersion = async ({\n seedLocalId,\n seedUid,\n seedType,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const newVersionLocalId = generateId()\n\n await appDb.insert(versions).values({\n localId: newVersionLocalId,\n createdAt: Date.now(),\n seedLocalId,\n seedUid: seedUid ?? 'NULL',\n seedType,\n uid: uid || 'NULL',\n })\n\n return newVersionLocalId\n}\n"],"names":[],"mappings":";;;;;;;;;AAYa,MAAA,aAAa,GAAkB,OAAO,EACjD,WAAW,EACX,OAAO,EACP,QAAQ,EACR,GAAG,GACJ,KAAI;AACH,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,iBAAiB,GAAG,UAAU,EAAE;IAEtC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAClC,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,WAAW;QACX,OAAO,EAAE,OAAO,IAAI,MAAM;QAC1B,QAAQ;QACR,GAAG,EAAE,GAAG,IAAI,MAAM;AACnB,KAAA,CAAC;AAEF,IAAA,OAAO,iBAAiB;AAC1B;;;;"}
1
+ {"version":3,"file":"createVersion.js","sources":["../../../../../src/db/write/createVersion.ts"],"sourcesContent":["import { generateId } from '@/helpers'\nimport { versions } from '@/seedSchema'\nimport { BaseDb } from '../Db/BaseDb'\n\ntype CreateVersionProps = {\n seedLocalId?: string\n seedUid?: string\n seedType?: string\n uid?: string\n}\ntype CreateVersion = (props: CreateVersionProps) => Promise<string>\n\nexport const createVersion: CreateVersion = async ({\n seedLocalId,\n seedUid,\n seedType,\n uid,\n}) => {\n const appDb = BaseDb.getAppDb()\n\n const newVersionLocalId = generateId()\n\n await appDb.insert(versions).values({\n localId: newVersionLocalId,\n createdAt: Date.now(),\n seedLocalId,\n seedUid: seedUid ?? 'NULL',\n seedType,\n uid: uid || 'NULL',\n })\n\n return newVersionLocalId\n}\n"],"names":[],"mappings":";;;;;;;;;;AAYa,MAAA,aAAa,GAAkB,OAAO,EACjD,WAAW,EACX,OAAO,EACP,QAAQ,EACR,GAAG,GACJ,KAAI;AACH,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM,iBAAiB,GAAG,UAAU,EAAE;IAEtC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAClC,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,WAAW;QACX,OAAO,EAAE,OAAO,IAAI,MAAM;QAC1B,QAAQ;QACR,GAAG,EAAE,GAAG,IAAI,MAAM;AACnB,KAAA,CAAC;AAEF,IAAA,OAAO,iBAAiB;AAC1B;;;;"}
@@ -5,6 +5,7 @@ import '../../seedSchema/MetadataSchema.js';
5
5
  import '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
  import { or, eq } from 'drizzle-orm';
9
10
 
10
11
  const deleteItem = async ({ seedLocalId, seedUid }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"deleteItem.js","sources":["../../../../../src/db/write/deleteItem.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\n\ntype DeleteItemProps = {\n seedLocalId?: string\n seedUid?: string\n}\ntype DeleteItem = (props: DeleteItemProps) => Promise<void>\nexport const deleteItem: DeleteItem = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(seeds)\n .set({\n _markedForDeletion: 1,\n })\n .where(or(eq(seeds.localId, seedLocalId), eq(seeds.uid, seedUid)))\n}\n"],"names":[],"mappings":";;;;;;;;;AASO,MAAM,UAAU,GAAe,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AACvE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,KAAK;AACZ,SAAA,GAAG,CAAC;AACH,QAAA,kBAAkB,EAAE,CAAC;KACtB;SACA,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE;;;;"}
1
+ {"version":3,"file":"deleteItem.js","sources":["../../../../../src/db/write/deleteItem.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { seeds } from '@/seedSchema'\nimport { eq, or } from 'drizzle-orm'\n\ntype DeleteItemProps = {\n seedLocalId?: string\n seedUid?: string\n}\ntype DeleteItem = (props: DeleteItemProps) => Promise<void>\nexport const deleteItem: DeleteItem = async ({ seedLocalId, seedUid }) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(seeds)\n .set({\n _markedForDeletion: 1,\n })\n .where(or(eq(seeds.localId, seedLocalId), eq(seeds.uid, seedUid)))\n}\n"],"names":[],"mappings":";;;;;;;;;;AASO,MAAM,UAAU,GAAe,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,KAAI;AACvE,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,KAAK;AACZ,SAAA,GAAG,CAAC;AACH,QAAA,kBAAkB,EAAE,CAAC;KACtB;SACA,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE;;;;"}
@@ -5,6 +5,7 @@ import '../../seedSchema/MetadataSchema.js';
5
5
  import { appState } from '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
 
9
10
  const saveAppState = async (key, value) => {
10
11
  const appDb = BaseDb.getAppDb();
@@ -1 +1 @@
1
- {"version":3,"file":"saveAppState.js","sources":["../../../../../src/db/write/saveAppState.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\n\nexport const saveAppState = async (key: string, value: string) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .insert(appState)\n .values({\n key,\n value,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value,\n },\n })\n}\n"],"names":[],"mappings":";;;;;;;;AAGa,MAAA,YAAY,GAAG,OAAO,GAAW,EAAE,KAAa,KAAI;AAC/D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,QAAQ;AACf,SAAA,MAAM,CAAC;QACN,GAAG;QACH,KAAK;KACN;AACA,SAAA,kBAAkB,CAAC;QAClB,MAAM,EAAE,QAAQ,CAAC,GAAG;AACpB,QAAA,GAAG,EAAE;YACH,KAAK;AACN,SAAA;AACF,KAAA,CAAC;AACN;;;;"}
1
+ {"version":3,"file":"saveAppState.js","sources":["../../../../../src/db/write/saveAppState.ts"],"sourcesContent":["import { BaseDb } from '@/db/Db/BaseDb'\nimport { appState } from '@/seedSchema'\n\nexport const saveAppState = async (key: string, value: string) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .insert(appState)\n .values({\n key,\n value,\n })\n .onConflictDoUpdate({\n target: appState.key,\n set: {\n value,\n },\n })\n}\n"],"names":[],"mappings":";;;;;;;;;AAGa,MAAA,YAAY,GAAG,OAAO,GAAW,EAAE,KAAa,KAAI;AAC/D,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,QAAQ;AACf,SAAA,MAAM,CAAC;QACN,GAAG;QACH,KAAK;KACN;AACA,SAAA,kBAAkB,CAAC;QAClB,MAAM,EAAE,QAAQ,CAAC,GAAG;AACpB,QAAA,GAAG,EAAE;YACH,KAAK;AACN,SAAA;AACF,KAAA,CAAC;AACN;;;;"}
@@ -4,6 +4,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { BaseDb } from '../Db/BaseDb.js';
8
9
  import { eq } from 'drizzle-orm';
9
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"saveMetadata.js","sources":["../../../../../src/db/write/saveMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\n\nexport const saveMetadata = async (\n metadataRecord: Partial<MetadataType>,\n metadataValues: Partial<MetadataType>,\n) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(metadata)\n .set({\n ...metadataValues,\n updatedAt: Date.now(),\n })\n .where(eq(metadata.localId, metadataRecord.localId))\n}\n"],"names":[],"mappings":";;;;;;;;;AAIa,MAAA,YAAY,GAAG,OAC1B,cAAqC,EACrC,cAAqC,KACnC;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,QAAQ;AACf,SAAA,GAAG,CAAC;AACH,QAAA,GAAG,cAAc;AACjB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB;AACA,SAAA,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AACxD;;;;"}
1
+ {"version":3,"file":"saveMetadata.js","sources":["../../../../../src/db/write/saveMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\n\nexport const saveMetadata = async (\n metadataRecord: Partial<MetadataType>,\n metadataValues: Partial<MetadataType>,\n) => {\n const appDb = BaseDb.getAppDb()\n\n await appDb\n .update(metadata)\n .set({\n ...metadataValues,\n updatedAt: Date.now(),\n })\n .where(eq(metadata.localId, metadataRecord.localId))\n}\n"],"names":[],"mappings":";;;;;;;;;;AAIa,MAAA,YAAY,GAAG,OAC1B,cAAqC,EACrC,cAAqC,KACnC;AACF,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;AAE/B,IAAA,MAAM;SACH,MAAM,CAAC,QAAQ;AACf,SAAA,GAAG,CAAC;AACH,QAAA,GAAG,cAAc;AACjB,QAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB;AACA,SAAA,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;AACxD;;;;"}
@@ -5,6 +5,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
5
5
  import '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
  import { and, eq, sql } from 'drizzle-orm';
9
10
  import { getSeedData } from '../read/getSeedData.js';
10
11
  import { getVersionData } from '../read/getVersionData.js';
@@ -1 +1 @@
1
- {"version":3,"file":"updateItemPropertyValue.js","sources":["../../../../../src/db/write/updateItemPropertyValue.ts"],"sourcesContent":["import { escapeSqliteString } from '@/helpers/db'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, sql } from 'drizzle-orm'\nimport { getSeedData } from '@/db/read/getSeedData'\nimport { getVersionData } from '@/db/read/getVersionData'\nimport { generateId } from '@/helpers'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\nconst logger = debug('seedSdk:write:updateItemPropertyValue')\n\nconst sendItemUpdateEvent = ({ modelName, seedLocalId, seedUid }: { modelName: string, seedLocalId: string, seedUid: string }) => {\n if (!modelName || (!seedLocalId && !seedUid)) {\n return\n }\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n}\n\ntype UpdateItemPropertyValueResult = {\n localId: string\n schemaUid: string\n}\n\ntype UpdateItemPropertyValue = (props: Partial<MetadataType>) => Promise<UpdateItemPropertyValueResult | undefined>\n\nexport const updateItemPropertyValue: UpdateItemPropertyValue = async ({\n localId,\n propertyName,\n newValue,\n seedUid,\n seedLocalId,\n modelName,\n refSeedType,\n refResolvedValue,\n refResolvedDisplayValue,\n versionLocalId,\n versionUid,\n schemaUid,\n localStorageDir,\n}) => {\n if (!localId && !seedLocalId) {\n logger(\n `[db/write] [updateItemPropertyValue] no propertyLocalId or seedLocalId for property: ${propertyName}`,\n )\n return\n }\n\n let safeNewValue = newValue\n\n if (\n typeof newValue === 'string' &&\n !refResolvedDisplayValue &&\n !refResolvedValue\n ) {\n safeNewValue = escapeSqliteString(newValue)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, propertyName!),\n eq(metadata.seedLocalId, seedLocalId!),\n ),\n )\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n // const mostRecentRecordStatement = `SELECT local_id,\n // uid,\n // property_name,\n // property_value,\n // model_type,\n // seed_uid,\n // seed_local_id,\n // version_local_id,\n // version_uid,\n // schema_uid,\n // eas_data_type\n // FROM metadata\n // WHERE property_name = '${propertyName}'\n // AND seed_local_id = '${seedLocalId}'\n // ORDER BY COALESCE(attestation_created_at, created_at) DESC;`\n //\n // const { rows } = await runQueryForStatement(mostRecentRecordStatement)\n\n if (rows && rows.length > 0) {\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n modelType,\n seedUid,\n seedLocalId: seedLocalIdFromDb,\n versionLocalId,\n versionUid,\n schemaUid,\n easDataType,\n localStorageDir: localStorageDirFromDb,\n refSeedType: refSeedTypeFromDb,\n refResolvedValue: refResolvedValueFromDb,\n refResolvedDisplayValue: refResolvedDisplayValueFromDb,\n } = rows[0]\n\n if (\n propertyValueFromDb === newValue &&\n modelType === modelName?.toLowerCase() &&\n refSeedTypeFromDb === refSeedType &&\n refResolvedValueFromDb === refResolvedValue\n ) {\n logger(\n `[db/write] [updateItemPropertyValue] value is the same as most recent record for property: ${propertyNameFromDb}`,\n )\n return\n }\n\n // This means we already have a local-only record so we should just update that one\n if (!uid) {\n const updatePropertyStatement = `UPDATE metadata\n SET property_value = '${safeNewValue}',\n ref_seed_type = ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ref_resolved_value = ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ref_resolved_display_value = ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n updated_at = ${Date.now()}\n WHERE local_id = '${localId}';`\n\n await appDb.run(sql.raw(updatePropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return\n }\n\n const seedDataFromDb = await getSeedData({ seedLocalId })\n const versionDataFromDb = await getVersionData({ localId: versionLocalId })\n\n // Here we don't have a local-only record so we need to create a new one\n const newLocalId = generateId()\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n eas_data_type,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyNameFromDb}',\n '${safeNewValue}',\n '${modelType || modelName?.toLowerCase()}',\n ${seedDataFromDb?.uid ? `'${seedDataFromDb.uid}'` : 'NULL'},\n '${seedLocalIdFromDb}',\n '${versionLocalId}',\n ${versionDataFromDb?.uid ? `'${versionDataFromDb.uid}'` : 'NULL'},\n '${schemaUid}',\n ${easDataType ? `'${easDataType}'` : 'NULL'},\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n }\n\n // Here there are no records for this property on this seed so we should create one\n\n const newLocalId = generateId()\n\n if (!seedUid) {\n const seedData = await getSeedData({ seedLocalId })\n if (seedData) {\n seedUid = seedData.uid\n }\n }\n\n if (!versionUid) {\n const versionData = await getVersionData({ localId: versionLocalId })\n if (versionData) {\n versionUid = versionData.uid\n }\n }\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyName}',\n '${safeNewValue}',\n '${modelName?.toLowerCase()}',\n ${seedUid ? `'${seedUid}'` : 'NULL'},\n '${seedLocalId}',\n '${versionLocalId}',\n ${versionUid ? `'${versionUid}'` : 'NULL'},\n '${schemaUid}',\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n\n if (!seedLocalId && propertyName && modelName && newValue) {\n // TODO: Does this ever happen? If so, what should we do?\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateItemPropertyValue.js","sources":["../../../../../src/db/write/updateItemPropertyValue.ts"],"sourcesContent":["import { escapeSqliteString } from '@/helpers/db'\nimport { metadata, MetadataType } from '@/seedSchema'\nimport { and, eq, sql } from 'drizzle-orm'\nimport { getSeedData } from '@/db/read/getSeedData'\nimport { getVersionData } from '@/db/read/getVersionData'\nimport { generateId } from '@/helpers'\nimport debug from 'debug'\nimport { eventEmitter } from '@/eventBus'\nimport { BaseDb } from '@/db/Db/BaseDb'\nconst logger = debug('seedSdk:write:updateItemPropertyValue')\n\nconst sendItemUpdateEvent = ({ modelName, seedLocalId, seedUid }: { modelName: string, seedLocalId: string, seedUid: string }) => {\n if (!modelName || (!seedLocalId && !seedUid)) {\n return\n }\n // eventEmitter.emit(`item.${modelName}.${seedUid || seedLocalId}.update`)\n}\n\ntype UpdateItemPropertyValueResult = {\n localId: string\n schemaUid: string\n}\n\ntype UpdateItemPropertyValue = (props: Partial<MetadataType>) => Promise<UpdateItemPropertyValueResult | undefined>\n\nexport const updateItemPropertyValue: UpdateItemPropertyValue = async ({\n localId,\n propertyName,\n newValue,\n seedUid,\n seedLocalId,\n modelName,\n refSeedType,\n refResolvedValue,\n refResolvedDisplayValue,\n versionLocalId,\n versionUid,\n schemaUid,\n localStorageDir,\n}) => {\n if (!localId && !seedLocalId) {\n logger(\n `[db/write] [updateItemPropertyValue] no propertyLocalId or seedLocalId for property: ${propertyName}`,\n )\n return\n }\n\n let safeNewValue = newValue\n\n if (\n typeof newValue === 'string' &&\n !refResolvedDisplayValue &&\n !refResolvedValue\n ) {\n safeNewValue = escapeSqliteString(newValue)\n }\n\n const appDb = BaseDb.getAppDb()\n\n const rows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, propertyName!),\n eq(metadata.seedLocalId, seedLocalId!),\n ),\n )\n .orderBy(sql.raw('COALESCE(attestation_created_at, created_at) DESC'))\n\n // const mostRecentRecordStatement = `SELECT local_id,\n // uid,\n // property_name,\n // property_value,\n // model_type,\n // seed_uid,\n // seed_local_id,\n // version_local_id,\n // version_uid,\n // schema_uid,\n // eas_data_type\n // FROM metadata\n // WHERE property_name = '${propertyName}'\n // AND seed_local_id = '${seedLocalId}'\n // ORDER BY COALESCE(attestation_created_at, created_at) DESC;`\n //\n // const { rows } = await runQueryForStatement(mostRecentRecordStatement)\n\n if (rows && rows.length > 0) {\n const {\n localId,\n uid,\n propertyName: propertyNameFromDb,\n propertyValue: propertyValueFromDb,\n modelType,\n seedUid,\n seedLocalId: seedLocalIdFromDb,\n versionLocalId,\n versionUid,\n schemaUid,\n easDataType,\n localStorageDir: localStorageDirFromDb,\n refSeedType: refSeedTypeFromDb,\n refResolvedValue: refResolvedValueFromDb,\n refResolvedDisplayValue: refResolvedDisplayValueFromDb,\n } = rows[0]\n\n if (\n propertyValueFromDb === newValue &&\n modelType === modelName?.toLowerCase() &&\n refSeedTypeFromDb === refSeedType &&\n refResolvedValueFromDb === refResolvedValue\n ) {\n logger(\n `[db/write] [updateItemPropertyValue] value is the same as most recent record for property: ${propertyNameFromDb}`,\n )\n return\n }\n\n // This means we already have a local-only record so we should just update that one\n if (!uid) {\n const updatePropertyStatement = `UPDATE metadata\n SET property_value = '${safeNewValue}',\n ref_seed_type = ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ref_resolved_value = ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ref_resolved_display_value = ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n updated_at = ${Date.now()}\n WHERE local_id = '${localId}';`\n\n await appDb.run(sql.raw(updatePropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return\n }\n\n const seedDataFromDb = await getSeedData({ seedLocalId })\n const versionDataFromDb = await getVersionData({ localId: versionLocalId })\n\n // Here we don't have a local-only record so we need to create a new one\n const newLocalId = generateId()\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n eas_data_type,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyNameFromDb}',\n '${safeNewValue}',\n '${modelType || modelName?.toLowerCase()}',\n ${seedDataFromDb?.uid ? `'${seedDataFromDb.uid}'` : 'NULL'},\n '${seedLocalIdFromDb}',\n '${versionLocalId}',\n ${versionDataFromDb?.uid ? `'${versionDataFromDb.uid}'` : 'NULL'},\n '${schemaUid}',\n ${easDataType ? `'${easDataType}'` : 'NULL'},\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n }\n\n // Here there are no records for this property on this seed so we should create one\n\n const newLocalId = generateId()\n\n if (!seedUid) {\n const seedData = await getSeedData({ seedLocalId })\n if (seedData) {\n seedUid = seedData.uid\n }\n }\n\n if (!versionUid) {\n const versionData = await getVersionData({ localId: versionLocalId })\n if (versionData) {\n versionUid = versionData.uid\n }\n }\n\n const newPropertyStatement = `INSERT INTO metadata (local_id,\n property_name,\n property_value,\n model_type,\n seed_uid,\n seed_local_id,\n version_local_id,\n version_uid,\n schema_uid,\n ref_seed_type,\n ref_resolved_value,\n ref_resolved_display_value,\n local_storage_dir,\n created_at)\n VALUES ('${newLocalId}',\n '${propertyName}',\n '${safeNewValue}',\n '${modelName?.toLowerCase()}',\n ${seedUid ? `'${seedUid}'` : 'NULL'},\n '${seedLocalId}',\n '${versionLocalId}',\n ${versionUid ? `'${versionUid}'` : 'NULL'},\n '${schemaUid}',\n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'},\n ${refResolvedDisplayValue ? `'${refResolvedDisplayValue}'` : 'NULL'},\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${Date.now()});`\n\n await appDb.run(sql.raw(newPropertyStatement))\n\n sendItemUpdateEvent({ modelName, seedLocalId, seedUid })\n\n return {\n localId: newLocalId,\n schemaUid,\n }\n\n if (!seedLocalId && propertyName && modelName && newValue) {\n // TODO: Does this ever happen? If so, what should we do?\n }\n}\n"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
4
4
  import '../../seedSchema/AppStateSchema.js';
5
5
  import '../../seedSchema/ModelSchema.js';
6
6
  import '../../seedSchema/ModelUidSchema.js';
7
+ import '../../seedSchema/ConfigSchema.js';
7
8
  import { BaseDb } from '../Db/BaseDb.js';
8
9
  import { eq } from 'drizzle-orm';
9
10
  import 'graphql-request';
@@ -1 +1 @@
1
- {"version":3,"file":"updateMetadata.js","sources":["../../../../../src/db/write/updateMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { PropertyType } from '@/types'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\nimport { GET_SCHEMA_BY_NAME } from '@/Item/queries'\n\ntype UpdateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const updateMetadata: UpdateMetadata = async (metadataValues, propertyRecordSchema) => {\n const appDb = BaseDb.getAppDb()\n\n const { localId, ...rest } = metadataValues\n\n if (!localId) {\n throw new Error('No localId provided to updateMetadata')\n }\n \n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n if (\n !isItemStorage && \n propertyRecordSchema &&\n (!metadataValues.schemaUid || metadataValues.schemaUid === 'undefined' )\n ) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n await appDb.update(metadata).set(rest).where(eq(metadata.localId, localId))\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAgBa,MAAA,cAAc,GAAmB,OAAO,cAAc,EAAE,oBAAoB,KAAI;AAC3F,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc;IAE3C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;IAmC1D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7E;;;;"}
1
+ {"version":3,"file":"updateMetadata.js","sources":["../../../../../src/db/write/updateMetadata.ts"],"sourcesContent":["import { metadata, MetadataType } from '@/seedSchema'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { eq } from 'drizzle-orm'\nimport { PropertyType } from '@/types'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { INTERNAL_DATA_TYPES } from '@/helpers/constants'\nimport { toSnakeCase } from 'drizzle-orm/casing'\nimport { Schema } from '@/graphql/gql/graphql'\nimport { GET_SCHEMA_BY_NAME } from '@/Item/queries'\n\ntype UpdateMetadata = (\n metadataValues: Partial<MetadataType>,\n propertyRecordSchema?: PropertyType | undefined,\n) => Promise<MetadataType>\n\nexport const updateMetadata: UpdateMetadata = async (metadataValues, propertyRecordSchema) => {\n const appDb = BaseDb.getAppDb()\n\n const { localId, ...rest } = metadataValues\n\n if (!localId) {\n throw new Error('No localId provided to updateMetadata')\n }\n \n const isItemStorage = propertyRecordSchema && propertyRecordSchema.storageType === 'ItemStorage'\n\n if (\n !isItemStorage && \n propertyRecordSchema &&\n (!metadataValues.schemaUid || metadataValues.schemaUid === 'undefined' )\n ) {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const easDataType = INTERNAL_DATA_TYPES[propertyRecordSchema.dataType].eas\n\n const propertyNameSnakeCase = toSnakeCase(metadataValues.propertyName)\n \n const queryResult = await queryClient.fetchQuery({\n queryKey: [`getSchemaByName${metadataValues.propertyName}`],\n queryFn: async (): Promise<{schemas: Schema[]}> =>\n easClient.request(GET_SCHEMA_BY_NAME, {\n where: {\n schema: {\n equals: `${easDataType} ${propertyNameSnakeCase}`,\n },\n },\n }),\n })\n\n if (queryResult && queryResult.schemas.length > 0) {\n metadataValues.schemaUid = queryResult.schemas[0].id\n }\n\n }\n\n await appDb.update(metadata).set(rest).where(eq(metadata.localId, localId))\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgBa,MAAA,cAAc,GAAmB,OAAO,cAAc,EAAE,oBAAoB,KAAI;AAC3F,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE;IAE/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc;IAE3C,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;IAmC1D,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7E;;;;"}
@@ -7,6 +7,7 @@ import '../../seedSchema/MetadataSchema.js';
7
7
  import { appState } from '../../seedSchema/AppStateSchema.js';
8
8
  import '../../seedSchema/ModelSchema.js';
9
9
  import '../../seedSchema/ModelUidSchema.js';
10
+ import '../../seedSchema/ConfigSchema.js';
10
11
  import { eq } from 'drizzle-orm';
11
12
  import { getAddressesFromDb } from '../../helpers/db.js';
12
13
  import '../../helpers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sources":["../../../../../src/events/files/download.ts"],"sourcesContent":["import { syncDbFiles } from '@/services/internal/helpers'\nimport { eventEmitter } from '@/eventBus'\nimport { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { appState } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport {\n BaseFileManager,\n} from '@/helpers'\nimport { GET_FILES_METADATA } from '@/schema/file/queries'\nimport debug from 'debug'\nimport { getGlobalService } from '@/services/global/globalMachine'\nimport { waitFor } from 'xstate'\nimport { getMetadata } from '@/db/read/getMetadata'\nimport { saveMetadata } from '@/db/write/saveMetadata'\nimport { GET_TRANSACTION_TAGS } from '@/helpers/ArweaveClient/queries'\nimport { saveAppState } from '@/db/write/saveAppState'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient, BaseQueryClient, BaseArweaveClient } from '@/helpers'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { isBrowser } from '@/helpers/environment'\n\n\nconst logger = debug('seedSdk:files:download')\n\n\nexport const downloadAllFilesRequestHandler = async ({\n endpoints,\n eventId,\n}) => {\n\n if (!isBrowser()) {\n return\n }\n\n await syncDbFiles(endpoints)\n\n eventEmitter.emit('fs.downloadAll.success', { eventId })\n eventEmitter.emit('fs.downloadAllBinary.request', { endpoints })\n}\n\nexport const downloadAllFilesBinaryRequestHandler = async () => {\n let addresses: string[] | undefined\n\n if (BaseDb.isAppDbReady()) {\n addresses = await getAddressesFromDb()\n }\n\n if (!BaseDb.isAppDbReady()) {\n const globalService = getGlobalService()\n const internalService = globalService.getSnapshot().context.internalService\n if (internalService) {\n await waitFor(internalService, (snapshot) => {\n return snapshot.value === 'ready'\n })\n addresses = await getAddressesFromDb()\n }\n }\n\n if (!addresses || addresses.length === 0) {\n return\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { filesMetadata } = await queryClient.fetchQuery({\n queryKey: ['getFilesMetadata', ...addresses],\n queryFn: async () =>\n easClient.request(GET_FILES_METADATA, {\n where: {\n attester: {\n in: addresses,\n },\n schema: {\n is: {\n id: {\n equals:\n '0x55fdefb36fcbbaebeb7d6b41dc3a1a9666e4e42154267c889de064faa7ede517',\n },\n },\n },\n },\n }),\n })\n\n await BaseFileManager.createDirIfNotExists('/files')\n await BaseFileManager.createDirIfNotExists('/files/html')\n await BaseFileManager.createDirIfNotExists('/files/json')\n await BaseFileManager.createDirIfNotExists('/files/images')\n\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n console.warn('[fetchAll/actors] [fetchAllBinaryData] seedDb not available')\n return []\n }\n\n const excludedTransactionsQuery = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'excludedTransactions'))\n\n let excludedTransactions = new Set<string>()\n\n if (excludedTransactionsQuery && excludedTransactionsQuery.length === 1) {\n const valueString = excludedTransactionsQuery[0].value\n if (valueString) {\n const excludedTransactionsArray = JSON.parse(valueString)\n excludedTransactions = new Set(excludedTransactionsArray)\n }\n }\n\n const transactionIds = []\n\n for (const fileMetadata of filesMetadata) {\n const json = JSON.parse(fileMetadata.decodedDataJson)\n const transactionId = json[0].value.value\n if (excludedTransactions.has(transactionId)) {\n continue\n }\n transactionIds.push(transactionId)\n }\n\n const arweave = getArweave()\n\n if (!arweave) {\n console.warn(\n '[fetchAll/actors] [fetchAllBinaryData] arweave not available',\n )\n return []\n }\n\n const arweaveClient = BaseArweaveClient.getArweaveClient()\n\n const transactionIdsToDownload = []\n\n for (const transactionId of transactionIds) {\n\n try {\n const res = await fetch(\n `https://${ARWEAVE_HOST}/tx/${transactionId}/status`,\n )\n\n if (res.status !== 200) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] error fetching transaction data for ${transactionId}`,\n )\n\n excludedTransactions.add(transactionId)\n\n await saveAppState(\n 'excludedTransactions',\n JSON.stringify(Array.from(excludedTransactions)),\n )\n\n continue\n }\n \n const { tags: tagsResult } = await queryClient.fetchQuery({\n queryKey: ['getTransactionTags', transactionId],\n queryFn: async () =>\n arweaveClient.request(GET_TRANSACTION_TAGS, {\n transactionId,\n }),\n })\n\n const tags = tagsResult.tags || []\n\n if (tagsResult.tags && tagsResult.tags.length > 0) {\n for (const { name, value } of tags) {\n if (name === 'Content-SHA-256') {\n const metadataRecord = await getMetadata({\n storageTransactionId: transactionId,\n })\n\n if (metadataRecord) {\n await saveMetadata(metadataRecord, {\n contentHash: value,\n })\n }\n }\n }\n }\n\n transactionIdsToDownload.push(transactionId)\n\n \n\n } catch (error) {\n logger(error)\n }\n }\n\n await BaseFileManager.downloadAllFiles({\n transactionIds: transactionIdsToDownload,\n arweaveHost: ARWEAVE_HOST,\n excludedTransactions,\n })\n\n await BaseFileManager.resizeAllImages({\n width: 480,\n height: 480,\n })\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.js","sources":["../../../../../src/events/files/download.ts"],"sourcesContent":["import { syncDbFiles } from '@/services/internal/helpers'\nimport { eventEmitter } from '@/eventBus'\nimport { ARWEAVE_HOST } from '@/services/internal/constants'\nimport { appState } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport { getAddressesFromDb } from '@/helpers/db'\nimport {\n BaseFileManager,\n} from '@/helpers'\nimport { GET_FILES_METADATA } from '@/schema/file/queries'\nimport debug from 'debug'\nimport { getGlobalService } from '@/services/global/globalMachine'\nimport { waitFor } from 'xstate'\nimport { getMetadata } from '@/db/read/getMetadata'\nimport { saveMetadata } from '@/db/write/saveMetadata'\nimport { GET_TRANSACTION_TAGS } from '@/helpers/ArweaveClient/queries'\nimport { saveAppState } from '@/db/write/saveAppState'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { BaseEasClient, BaseQueryClient, BaseArweaveClient } from '@/helpers'\nimport { getArweave } from '@/helpers/ArweaveClient'\nimport { isBrowser } from '@/helpers/environment'\n\n\nconst logger = debug('seedSdk:files:download')\n\n\nexport const downloadAllFilesRequestHandler = async ({\n endpoints,\n eventId,\n}) => {\n\n if (!isBrowser()) {\n return\n }\n\n await syncDbFiles(endpoints)\n\n eventEmitter.emit('fs.downloadAll.success', { eventId })\n eventEmitter.emit('fs.downloadAllBinary.request', { endpoints })\n}\n\nexport const downloadAllFilesBinaryRequestHandler = async () => {\n let addresses: string[] | undefined\n\n if (BaseDb.isAppDbReady()) {\n addresses = await getAddressesFromDb()\n }\n\n if (!BaseDb.isAppDbReady()) {\n const globalService = getGlobalService()\n const internalService = globalService.getSnapshot().context.internalService\n if (internalService) {\n await waitFor(internalService, (snapshot) => {\n return snapshot.value === 'ready'\n })\n addresses = await getAddressesFromDb()\n }\n }\n\n if (!addresses || addresses.length === 0) {\n return\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { filesMetadata } = await queryClient.fetchQuery({\n queryKey: ['getFilesMetadata', ...addresses],\n queryFn: async () =>\n easClient.request(GET_FILES_METADATA, {\n where: {\n attester: {\n in: addresses,\n },\n schema: {\n is: {\n id: {\n equals:\n '0x55fdefb36fcbbaebeb7d6b41dc3a1a9666e4e42154267c889de064faa7ede517',\n },\n },\n },\n },\n }),\n })\n\n await BaseFileManager.createDirIfNotExists('/files')\n await BaseFileManager.createDirIfNotExists('/files/html')\n await BaseFileManager.createDirIfNotExists('/files/json')\n await BaseFileManager.createDirIfNotExists('/files/images')\n\n const appDb = BaseDb.getAppDb()\n\n if (!appDb) {\n console.warn('[fetchAll/actors] [fetchAllBinaryData] seedDb not available')\n return []\n }\n\n const excludedTransactionsQuery = await appDb\n .select()\n .from(appState)\n .where(eq(appState.key, 'excludedTransactions'))\n\n let excludedTransactions = new Set<string>()\n\n if (excludedTransactionsQuery && excludedTransactionsQuery.length === 1) {\n const valueString = excludedTransactionsQuery[0].value\n if (valueString) {\n const excludedTransactionsArray = JSON.parse(valueString)\n excludedTransactions = new Set(excludedTransactionsArray)\n }\n }\n\n const transactionIds = []\n\n for (const fileMetadata of filesMetadata) {\n const json = JSON.parse(fileMetadata.decodedDataJson)\n const transactionId = json[0].value.value\n if (excludedTransactions.has(transactionId)) {\n continue\n }\n transactionIds.push(transactionId)\n }\n\n const arweave = getArweave()\n\n if (!arweave) {\n console.warn(\n '[fetchAll/actors] [fetchAllBinaryData] arweave not available',\n )\n return []\n }\n\n const arweaveClient = BaseArweaveClient.getArweaveClient()\n\n const transactionIdsToDownload = []\n\n for (const transactionId of transactionIds) {\n\n try {\n const res = await fetch(\n `https://${ARWEAVE_HOST}/tx/${transactionId}/status`,\n )\n\n if (res.status !== 200) {\n logger(\n `[fetchAll/actors] [fetchAllBinaryData] error fetching transaction data for ${transactionId}`,\n )\n\n excludedTransactions.add(transactionId)\n\n await saveAppState(\n 'excludedTransactions',\n JSON.stringify(Array.from(excludedTransactions)),\n )\n\n continue\n }\n \n const { tags: tagsResult } = await queryClient.fetchQuery({\n queryKey: ['getTransactionTags', transactionId],\n queryFn: async () =>\n arweaveClient.request(GET_TRANSACTION_TAGS, {\n transactionId,\n }),\n })\n\n const tags = tagsResult.tags || []\n\n if (tagsResult.tags && tagsResult.tags.length > 0) {\n for (const { name, value } of tags) {\n if (name === 'Content-SHA-256') {\n const metadataRecord = await getMetadata({\n storageTransactionId: transactionId,\n })\n\n if (metadataRecord) {\n await saveMetadata(metadataRecord, {\n contentHash: value,\n })\n }\n }\n }\n }\n\n transactionIdsToDownload.push(transactionId)\n\n \n\n } catch (error) {\n logger(error)\n }\n }\n\n await BaseFileManager.downloadAllFiles({\n transactionIds: transactionIdsToDownload,\n arweaveHost: ARWEAVE_HOST,\n excludedTransactions,\n })\n\n await BaseFileManager.resizeAllImages({\n width: 480,\n height: 480,\n })\n}\n"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { metadata } from '../../seedSchema/MetadataSchema.js';
5
5
  import '../../seedSchema/AppStateSchema.js';
6
6
  import '../../seedSchema/ModelSchema.js';
7
7
  import { modelUids } from '../../seedSchema/ModelUidSchema.js';
8
+ import '../../seedSchema/ConfigSchema.js';
8
9
  import { inArray, sql, and, eq } from 'drizzle-orm';
9
10
  import { generateId, parseEasRelationPropertyName } from '../../helpers/index.js';
10
11
  import { GET_SEEDS, GET_VERSIONS, GET_PROPERTIES } from '../../Item/queries.js';
@@ -1 +1 @@
1
- {"version":3,"file":"syncDbWithEas.js","sources":["../../../../../src/events/item/syncDbWithEas.ts"],"sourcesContent":["import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { getItemPropertiesFromEas, getItemVersionsFromEas, getModelSchemasFromEas } from '@/browser/helpers/eas'\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<SaveEasVersionsToDbReturn>\n\ntype SaveEasVersionsToDbReturn = {\n versionUids: string[]\n}\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { schemaStringToModelRecord } = await getModelSchemas()\n\n const modelSchemas = await getModelSchemasFromEas()\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const itemVersions = await getItemVersionsFromEas({\n seedUids\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const itemProperties = await getItemPropertiesFromEas({\n versionUids,\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syncDbWithEas.js","sources":["../../../../../src/events/item/syncDbWithEas.ts"],"sourcesContent":["import { camelCase, DebouncedFunc, startCase, throttle } from 'lodash-es'\nimport { Attestation, SchemaWhereInput } from '@/graphql/gql/graphql'\nimport {\n metadata,\n MetadataType,\n modelUids,\n seeds,\n SeedType,\n versions,\n} from '@/seedSchema'\nimport { and, eq, inArray, sql } from 'drizzle-orm'\nimport {\n generateId,\n parseEasRelationPropertyName,\n} from '@/helpers'\nimport {\n GET_PROPERTIES,\n GET_SEEDS,\n GET_VERSIONS,\n} from '@/Item/queries'\nimport { escapeSqliteString, getAddressesFromDb } from '@/helpers/db'\nimport { eventEmitter } from '@/eventBus'\nimport { getModelNames, getModels } from '@/stores/modelClass'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { getModelSchemas } from '@/db/read/getModelSchemas'\nimport { ModelSchema, PropertyType } from '@/types'\nimport { createSeeds } from '@/db/write/createSeeds'\nimport { setSchemaUidForSchemaDefinition } from '@/stores/eas'\nimport { BaseEasClient } from '@/helpers/EasClient/BaseEasClient'\nimport { BaseQueryClient } from '@/helpers/QueryClient/BaseQueryClient'\nimport { getItemPropertiesFromEas, getItemVersionsFromEas, getModelSchemasFromEas } from '@/browser/helpers/eas'\n\n\nconst relationValuesToExclude = [\n '0x0000000000000000000000000000000000000000000000000000000000000020',\n]\n\n\nconst getSeedsFromSchemaUids = async ({ schemaUids, addresses }) => {\n const AND = [\n {\n OR: [] as Record<string, unknown>[],\n },\n ]\n\n for (const schemaUid of schemaUids) {\n AND[0].OR.push({\n decodedDataJson: {\n contains: schemaUid,\n },\n })\n }\n\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await queryClient.fetchQuery({\n queryKey: [`getSeedsForAllModels`],\n queryFn: async () =>\n easClient.request(GET_SEEDS, {\n where: {\n attester: {\n in: addresses,\n },\n schemaId: {\n in: schemaUids,\n },\n AND,\n },\n }),\n })\n\n return itemSeeds\n}\n\nconst seedUidToLocalId = new Map<string, string>()\nconst seedUidToModelType = new Map<string, string>()\nconst relatedSeedUids = new Set<string>()\n\nconst versionUidToLocalId = new Map<string, string>()\nconst versionUidToSeedUid = new Map<string, string>()\n\nconst propertyUidToLocalId = new Map<string, string>()\n\ntype SaveEasSeedsToDbProps = {\n itemSeeds: Attestation[]\n}\n\ntype SaveEasSeedsToDbReturn = {\n seedUids: string[]\n}\n\ntype SaveEasSeedsToDb = (\n props: SaveEasSeedsToDbProps,\n) => Promise<SaveEasSeedsToDbReturn>\n\nconst saveEasSeedsToDb: SaveEasSeedsToDb = async ({ itemSeeds }) => {\n const appDb = BaseDb.getAppDb()\n\n const seedUids = itemSeeds.map((seed) => seed.id)\n\n const existingSeedRecordsRows: SeedType[] = await appDb\n .select()\n .from(seeds)\n .where(inArray(seeds.uid, seedUids))\n\n const existingSeedUids = new Set<string>()\n\n if (existingSeedRecordsRows && existingSeedRecordsRows.length > 0) {\n for (const row of existingSeedRecordsRows) {\n existingSeedUids.add(row.uid)\n seedUidToLocalId.set(row.uid, row.localId)\n seedUidToModelType.set(row.uid, row.type)\n }\n }\n\n const newSeeds = itemSeeds.filter((seed) => !existingSeedUids.has(seed.id))\n\n if (newSeeds.length === 0) {\n return { seedUidToLocalId, seedUids }\n }\n\n const newSeedsData: Partial<SeedType>[] = []\n\n for (let i = 0; i < newSeeds.length; i++) {\n const seed = newSeeds[i]\n seedUidToModelType.set(seed.id, seed.schema.schemaNames[0].name)\n const seedLocalId = generateId()\n seedUidToLocalId.set(seed.id, seedLocalId)\n\n const attestationRaw = escapeSqliteString(JSON.stringify(seed))\n\n newSeedsData.push({\n localId: seedLocalId,\n uid: seed.id,\n schemaUid: seed.schemaId,\n type: seed.schema.schemaNames[0].name,\n createdAt: Date.now(),\n attestationCreatedAt: seed.timeCreated * 1000,\n attestationRaw,\n })\n\n seedUidToLocalId.set(seed.id, seedLocalId)\n }\n\n const newSeedUids = await createSeeds(newSeedsData)\n\n return { seedUids: newSeedUids }\n}\n\ntype SaveEasVersionsToDbParams = {\n itemVersions: Attestation[]\n}\n\ntype SaveEasVersionsToDb = (\n props: SaveEasVersionsToDbParams,\n) => Promise<SaveEasVersionsToDbReturn>\n\ntype SaveEasVersionsToDbReturn = {\n versionUids: string[]\n}\n\nconst saveEasVersionsToDb: SaveEasVersionsToDb = async ({ itemVersions }) => {\n const versionUids = itemVersions.map((version) => version.id)\n\n const appDb = BaseDb.getAppDb()\n\n const existingVersionRecordsRows: MetadataType[] = await appDb\n .select()\n .from(versions)\n .where(inArray(versions.uid, versionUids))\n\n const existingVersionUids = new Set<string>()\n\n if (existingVersionRecordsRows && existingVersionRecordsRows.length > 0) {\n for (const row of existingVersionRecordsRows) {\n existingVersionUids.add(row.uid)\n versionUidToLocalId.set(row.uid, row.localId)\n versionUidToSeedUid.set(row.uid, row.seedUid)\n }\n }\n\n const newVersions = itemVersions.filter(\n (version) => !existingVersionUids.has(version.id),\n )\n\n if (newVersions.length === 0) {\n return { versionUidToLocalId, versionUids }\n }\n\n let insertVersionsQuery = `INSERT INTO versions (local_id, uid, seed_uid, seed_local_id, seed_type, created_at,\n attestation_created_at,\n attestation_raw)\n VALUES `\n\n for (let i = 0; i < newVersions.length; i++) {\n const version = newVersions[i]\n versionUidToSeedUid.set(version.id, version.refUID)\n const versionLocalId = generateId()\n versionUidToLocalId.set(version.id, versionLocalId)\n\n const seedUid = versionUidToSeedUid.get(version.id)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const seedType = seedUidToModelType.get(seedUid!)\n const attestationRaw = escapeSqliteString(JSON.stringify(version))\n\n const valuesString = `('${versionLocalId}', '${version.id}', '${seedUid}', '${seedLocalId}', '${seedType}', ${Date.now()}, ${version.timeCreated * 1000}, '${attestationRaw}')`\n\n if (i < newVersions.length - 1) {\n insertVersionsQuery += valuesString + ', '\n }\n\n if (i === newVersions.length - 1) {\n insertVersionsQuery += valuesString + ';'\n }\n\n versionUidToLocalId.set(version.id, versionLocalId)\n }\n\n await appDb.run(sql.raw(insertVersionsQuery))\n\n return { versionUids }\n}\n\nconst createMetadataRecordsForStorageTransactionId = async (\n storageTransactionIdProperty: Attestation,\n modelSchema: ModelSchema,\n) => {\n const attestationData = JSON.parse(\n storageTransactionIdProperty.decodedDataJson,\n )[0].value\n const propertyName = camelCase(attestationData.name)\n const propertyValue = attestationData.value\n\n const itemStorageProperties = new Map<string, PropertyType>()\n\n for (const [_propertyName, propertyDef] of Object.entries(modelSchema)) {\n if (propertyDef?.storageType && propertyDef.storageType === 'ItemStorage') {\n itemStorageProperties.set(_propertyName, propertyDef)\n }\n }\n\n if (itemStorageProperties.size === 0) {\n return\n }\n\n const appDb = BaseDb.getAppDb()\n\n for (const [_propertyName, propertyDef] of itemStorageProperties.entries()) {\n const existingMetadataRecordRows = await appDb\n .select()\n .from(metadata)\n .where(\n and(\n eq(metadata.propertyName, _propertyName),\n eq(metadata.propertyValue, propertyValue),\n eq(metadata.versionUid, storageTransactionIdProperty.refUID),\n ),\n )\n\n if (existingMetadataRecordRows && existingMetadataRecordRows.length > 0) {\n continue\n }\n\n const seedUid = versionUidToSeedUid.get(\n storageTransactionIdProperty.refUID,\n ) as string\n const seedLocalId = seedUidToLocalId.get(seedUid)\n const versionUid = storageTransactionIdProperty.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n\n const propertyLocalId = generateId()\n await appDb.insert(metadata).values({\n localId: propertyLocalId,\n propertyName: _propertyName,\n propertyValue,\n localStorageDir: propertyDef.localStorageDir,\n seedLocalId,\n seedUid,\n versionLocalId,\n versionUid,\n refValueType: 'file',\n refResolvedValue: `${propertyValue}${propertyDef.filenameSuffix}`,\n modelType: seedUidToModelType.get(seedUid),\n createdAt: Date.now(),\n updatedAt: Date.now(),\n })\n }\n}\n\ntype SaveEasPropertiesToDbParams = {\n itemProperties: Attestation[]\n itemSeeds: Attestation[]\n}\n\ntype SaveEasPropertiesToDb = (\n props: SaveEasPropertiesToDbParams,\n) => Promise<Record<string, unknown>>\n\nlet isSavingToDb = false\n\nconst saveEasPropertiesToDb: SaveEasPropertiesToDb = async ({\n itemProperties,\n itemSeeds,\n}) => {\n if (isSavingToDb) {\n return\n }\n isSavingToDb = true\n\n const propertyUids = itemProperties.map((property) => property.id)\n\n const models = getModels()\n\n const appDb = BaseDb.getAppDb()\n\n const existingMetadataRecordsRows: MetadataType[] = await appDb\n .select()\n .from(metadata)\n .where(inArray(metadata.uid, propertyUids))\n\n const existingPropertyRecordsUids = new Set<string>()\n\n if (existingMetadataRecordsRows && existingMetadataRecordsRows.length > 0) {\n for (const row of existingMetadataRecordsRows) {\n existingPropertyRecordsUids.add(row.uid)\n propertyUidToLocalId.set(row.uid, row.localId)\n }\n }\n\n const newProperties = itemProperties.filter(\n (property) => !existingPropertyRecordsUids.has(property.id),\n )\n\n if (newProperties.length === 0) {\n return { propertyUidToLocalId, propertyUids }\n }\n\n let insertPropertiesQuery = `INSERT INTO metadata (local_id, uid, schema_uid, property_name, property_value,\n eas_data_type, version_uid, version_local_id, seed_uid,\n seed_local_id, model_type, ref_value_type, ref_seed_type,\n ref_schema_uid,\n created_at, attestation_created_at, attestation_raw,\n local_storage_dir, ref_resolved_value)\n VALUES `\n\n for (let i = 0; i < newProperties.length; i++) {\n const property = newProperties[i]\n const propertyLocalId = generateId()\n const metadata = JSON.parse(property.decodedDataJson)[0].value\n\n let propertyNameSnake = metadata.name\n\n if (!propertyNameSnake) {\n console.warn(\n '[item/events] [syncDbWithEas] no propertyName found for property: ',\n property,\n )\n continue\n }\n\n let isRelation = false\n let refValueType\n let refSeedType\n let refSchemaUid\n let refResolvedValue\n let isList = false\n const schemaUid = property.schemaId\n\n setSchemaUidForSchemaDefinition({\n text: propertyNameSnake,\n schemaUid,\n })\n\n if (\n (propertyNameSnake.endsWith('_id') ||\n propertyNameSnake.endsWith('_ids')) &&\n propertyNameSnake !== 'storage_transaction_id' &&\n propertyNameSnake !== 'storage_provider_transaction_id'\n ) {\n isRelation = true\n\n if (Array.isArray(metadata.value)) {\n isList = true\n refValueType = 'list'\n\n const result = parseEasRelationPropertyName(propertyNameSnake)\n\n if (result) {\n propertyNameSnake = result.propertyName\n refSeedType = result.modelName\n }\n\n metadata.value.forEach((value) => {\n relatedSeedUids.add(value)\n })\n }\n\n if (!isList) {\n if (relationValuesToExclude.includes(metadata.value)) {\n continue\n }\n relatedSeedUids.add(metadata.value)\n }\n }\n\n let propertyValue = metadata.value\n\n if (typeof propertyValue !== 'string') {\n propertyValue = JSON.stringify(propertyValue)\n }\n\n if (isRelation && !isList) {\n const relatedSeed = itemSeeds.find(\n (seed: Attestation) => seed.id === metadata.value,\n )\n if (relatedSeed && relatedSeed.schema && relatedSeed.schema.schemaNames) {\n refSeedType = relatedSeed.schema.schemaNames[0].name\n refSchemaUid = relatedSeed.schemaId\n }\n }\n\n if (isRelation && isList) {\n const relatedSeeds = itemSeeds.filter((seed: Attestation) =>\n metadata.value.includes(seed.id),\n )\n if (relatedSeeds && relatedSeeds.length > 0) {\n refSeedType = relatedSeeds[0].schema.schemaNames[0].name\n refSchemaUid = relatedSeeds[0].schemaId\n }\n }\n\n const propertyName = camelCase(propertyNameSnake)\n propertyValue = escapeSqliteString(propertyValue)\n const easDataType = metadata.type\n const versionUid = property.refUID\n const versionLocalId = versionUidToLocalId.get(versionUid)\n const attestationCreatedAt = property.timeCreated * 1000\n const attestationRaw = escapeSqliteString(JSON.stringify(property))\n const seedUid = versionUidToSeedUid.get(versionUid)\n const seedLocalId = seedUidToLocalId.get(seedUid!)\n const modelType = seedUidToModelType.get(seedUid!)\n\n let localStorageDir\n const modelName = startCase(modelType)\n const ModelClass = models[modelName]\n const modelSchema = ModelClass.schema\n\n if (propertyNameSnake === 'storage_transaction_id') {\n await createMetadataRecordsForStorageTransactionId(property, modelSchema)\n }\n\n const valuesString = `('${propertyLocalId}', '${property.id}', \n '${property.schemaId}', '${propertyName}', \n '${propertyValue}', '${easDataType}', '${versionUid}', \n '${versionLocalId}', '${seedUid}', '${seedLocalId}', \n '${modelType}', ${refValueType ? `'${refValueType}'` : 'NULL'}, \n ${refSeedType ? `'${refSeedType}'` : 'NULL'},\n ${refSchemaUid ? `'${refSchemaUid}'` : 'NULL'},\n ${Date.now()}, ${attestationCreatedAt}, '${attestationRaw}',\n ${localStorageDir ? `'${localStorageDir}'` : 'NULL'},\n ${refResolvedValue ? `'${refResolvedValue}'` : 'NULL'})`\n\n if (i < newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ', '\n }\n\n if (i === newProperties.length - 1) {\n insertPropertiesQuery += valuesString + ';'\n }\n\n propertyUidToLocalId.set(property.id, propertyLocalId)\n }\n\n if (insertPropertiesQuery.endsWith('VALUES ')) {\n return { propertyUids }\n }\n\n if (insertPropertiesQuery.endsWith(', ')) {\n insertPropertiesQuery = insertPropertiesQuery.slice(0, -2) + ';'\n }\n\n await appDb.run(sql.raw(insertPropertiesQuery))\n\n isSavingToDb = false\n\n return { propertyUids }\n}\n\nconst getRelatedSeedsAndVersions = async () => {\n const queryClient = BaseQueryClient.getQueryClient()\n const easClient = BaseEasClient.getEasClient()\n\n const { itemSeeds } = await easClient.request(GET_SEEDS, {\n where: {\n id: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasSeedsToDb({ itemSeeds })\n\n const { itemVersions } = await easClient.request(GET_VERSIONS, {\n where: {\n refUID: {\n in: Array.from(relatedSeedUids),\n },\n },\n })\n\n await saveEasVersionsToDb({ itemVersions })\n\n const relatedVersionUids = itemVersions.map((v) => v.id)\n\n const { itemProperties } = await easClient.request(GET_PROPERTIES, {\n where: {\n refUID: {\n in: relatedVersionUids,\n },\n },\n })\n\n await saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n}\n\nconst syncDbWithEasHandler: DebouncedFunc<any> = throttle(\n async (_) => {\n const appDb = BaseDb.getAppDb()\n\n const { schemaStringToModelRecord } = await getModelSchemas()\n\n const modelSchemas = await getModelSchemasFromEas()\n\n const schemaUids: string[] = []\n\n for (const modelSchema of modelSchemas) {\n const foundModel = schemaStringToModelRecord.get(modelSchema.schema)\n\n if (!foundModel) {\n throw new Error(`Model not found for schema ${modelSchema.schema}`)\n }\n\n schemaUids.push(modelSchema.id)\n\n await appDb\n .insert(modelUids)\n .values({\n modelId: foundModel.id,\n uid: modelSchema.id,\n })\n .onConflictDoNothing()\n\n }\n\n const addresses = await getAddressesFromDb()\n\n const itemSeeds = await getSeedsFromSchemaUids({\n schemaUids: schemaUids,\n addresses,\n })\n\n // const seedDbRecords = new Map<string, Record<string, unknown>>()\n\n const { seedUids } = await saveEasSeedsToDb({\n itemSeeds,\n })\n\n const itemVersions = await getItemVersionsFromEas({\n seedUids\n })\n\n const { versionUids } = await saveEasVersionsToDb({\n itemVersions,\n })\n\n const itemProperties = await getItemPropertiesFromEas({\n versionUids,\n })\n\n const { propertyUids } = saveEasPropertiesToDb({\n itemProperties,\n itemSeeds,\n })\n\n await getRelatedSeedsAndVersions()\n\n for (const modelName of getModelNames()) {\n eventEmitter.emit('item.requestAll', { modelName })\n }\n },\n 30000,\n {\n leading: true,\n trailing: false,\n },\n)\n\nexport { syncDbWithEasHandler }\n"],"names":[],"mappings":"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"}