@seedprotocol/sdk 0.1.47 → 0.1.48

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 (141) hide show
  1. package/dist/bin.js.map +1 -1
  2. package/dist/constants-BLctWkrn.js.map +1 -1
  3. package/dist/{index-DWf9Ls94.js → index-DMIKRod-.js} +3995 -3995
  4. package/dist/index-DMIKRod-.js.map +1 -0
  5. package/dist/{index-B2WbNudj.js → index-wKss7188.js} +10 -10
  6. package/dist/index-wKss7188.js.map +1 -0
  7. package/dist/main.js +7 -7
  8. package/dist/{seed.schema.config-mBqth17w.js → seed.schema.config-C0M8Rcti.js} +7 -7
  9. package/dist/seed.schema.config-C0M8Rcti.js.map +1 -0
  10. package/dist/src/AppStateSchema.ts +10 -0
  11. package/dist/src/Attestation.ts +21 -0
  12. package/dist/src/ConfigSchema.ts +15 -0
  13. package/dist/src/ItemProperty.ts +383 -0
  14. package/dist/src/MetadataSchema.ts +28 -0
  15. package/dist/src/ModelSchema.ts +46 -0
  16. package/dist/src/ModelUidSchema.ts +16 -0
  17. package/dist/src/PropertyUidSchema.ts +16 -0
  18. package/dist/src/Schema.ts +17 -0
  19. package/dist/src/SeedSchema.ts +29 -0
  20. package/dist/src/VersionSchema.ts +16 -0
  21. package/dist/src/actors.ts +10 -0
  22. package/dist/src/addModelsToDb.ts +150 -0
  23. package/dist/src/allItems.ts +23 -0
  24. package/dist/src/arweave.ts +37 -0
  25. package/dist/src/browser.app.db.config.ts +27 -0
  26. package/dist/src/browser.seed.db.config.ts +33 -0
  27. package/dist/src/browser.ts +30 -0
  28. package/dist/src/checkStatus.ts +50 -0
  29. package/dist/src/client.ts +85 -0
  30. package/dist/src/configureFs.ts +81 -0
  31. package/dist/src/connectToDb.ts +74 -0
  32. package/dist/src/connectionManager.ts +67 -0
  33. package/dist/src/constants.ts +118 -0
  34. package/dist/src/create.ts +39 -0
  35. package/dist/src/createItem.ts +15 -0
  36. package/dist/src/createItemMachine.ts +37 -0
  37. package/dist/src/createPublishAttempt.ts +16 -0
  38. package/dist/src/createSeeds.ts +24 -0
  39. package/dist/src/createVersion.ts +33 -0
  40. package/dist/src/db.ts +247 -0
  41. package/dist/src/dbMachine.ts +181 -0
  42. package/dist/src/deleteItem.ts +19 -0
  43. package/dist/src/download.ts +289 -0
  44. package/dist/src/drizzle.ts +82 -0
  45. package/dist/src/environment.ts +15 -0
  46. package/dist/src/eventBus.ts +5 -0
  47. package/dist/src/events.ts +14 -0
  48. package/dist/src/fetchDataFromEas.ts +90 -0
  49. package/dist/src/fetchDbData.ts +16 -0
  50. package/dist/src/fetchRelatedItems.ts +179 -0
  51. package/dist/src/fetchSeeds.ts +44 -0
  52. package/dist/src/fetchVersions.ts +41 -0
  53. package/dist/src/files.ts +16 -0
  54. package/dist/src/fragment-masking.ts +87 -0
  55. package/dist/src/fsProxy.ts +36 -0
  56. package/dist/src/getItem.ts +189 -0
  57. package/dist/src/getItemProperties.ts +162 -0
  58. package/dist/src/getItems.ts +75 -0
  59. package/dist/src/getMetadata.ts +40 -0
  60. package/dist/src/getModelSchemas.ts +88 -0
  61. package/dist/src/getSchemaForModel.ts +42 -0
  62. package/dist/src/getSeedData.ts +34 -0
  63. package/dist/src/getVersionData.ts +58 -0
  64. package/dist/src/getVersionsForVersionUids.ts +39 -0
  65. package/dist/src/globalMachine.ts +259 -0
  66. package/dist/src/gql.ts +113 -0
  67. package/dist/src/graphql.ts +3201 -0
  68. package/dist/src/helpers.ts +150 -0
  69. package/dist/src/hydrateExistingItem.ts +137 -0
  70. package/dist/src/hydrateFromDb.ts +254 -0
  71. package/dist/src/hydrateNewItem.ts +34 -0
  72. package/dist/src/index.d.ts +5 -0
  73. package/dist/src/index.ts +21 -0
  74. package/dist/src/init.ts +61 -0
  75. package/dist/src/initialize.ts +127 -0
  76. package/dist/src/internalMachine.ts +220 -0
  77. package/dist/src/item.ts +324 -0
  78. package/dist/src/itemMachineAll.ts +158 -0
  79. package/dist/src/itemMachineSingle.ts +175 -0
  80. package/dist/src/loadAppDb.ts +47 -0
  81. package/dist/src/logger.ts +33 -0
  82. package/dist/src/machine.ts +55 -0
  83. package/dist/src/machines.ts +58 -0
  84. package/dist/src/migrate.ts +288 -0
  85. package/dist/src/model.ts +71 -0
  86. package/dist/src/modelClass.ts +19 -0
  87. package/dist/src/node.app.db.config.ts +40 -0
  88. package/dist/src/prepareDb.ts +34 -0
  89. package/dist/src/preparePublishRequestData.ts +81 -0
  90. package/dist/src/processItems.ts +71 -0
  91. package/dist/src/property.ts +161 -0
  92. package/dist/src/propertyMachine.ts +154 -0
  93. package/dist/src/publish.ts +31 -0
  94. package/dist/src/publishMachine.ts +77 -0
  95. package/dist/src/queries.ts +13 -0
  96. package/dist/src/read.ts +174 -0
  97. package/dist/src/recoverDeletedItem.ts +14 -0
  98. package/dist/src/request.ts +54 -0
  99. package/dist/src/requestAll.ts +157 -0
  100. package/dist/src/resolveRelatedValue.ts +348 -0
  101. package/dist/src/resolveRemoteStorage.ts +87 -0
  102. package/dist/src/save.ts +183 -0
  103. package/dist/src/saveConfig.ts +79 -0
  104. package/dist/src/saveDataToDb.ts +145 -0
  105. package/dist/src/saveMetadata.ts +18 -0
  106. package/dist/src/saveValueToDb.ts +94 -0
  107. package/dist/src/seed.schema.config.ts +25 -0
  108. package/dist/src/seed.ts +37 -0
  109. package/dist/src/seedData.ts +0 -0
  110. package/dist/src/seedProtocol.ts +17 -0
  111. package/dist/src/services.ts +359 -0
  112. package/dist/src/sqlWasmClient.ts +88 -0
  113. package/dist/src/syncDbWithEas.ts +686 -0
  114. package/dist/src/trash.ts +29 -0
  115. package/dist/src/ts-to-proto.ts +101 -0
  116. package/dist/src/types.ts +12 -0
  117. package/dist/src/upload.ts +86 -0
  118. package/dist/src/validate.ts +42 -0
  119. package/dist/src/validateInput.ts +33 -0
  120. package/dist/src/validateItemData.ts +20 -0
  121. package/dist/src/waitForDb.ts +23 -0
  122. package/dist/src/wasm.d.ts +8300 -0
  123. package/dist/src/write.ts +366 -0
  124. package/dist/types/src/browser/db/read/getModelSchemas.d.ts.map +1 -1
  125. package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts +3 -1
  126. package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts.map +1 -1
  127. package/dist/types/src/browser/item/single/actors/saveDataToDb.d.ts +3 -3
  128. package/dist/types/src/browser/item/single/itemMachineSingle.d.ts +3 -3
  129. package/dist/types/src/browser/property/ItemProperty.d.ts +7 -7
  130. package/dist/types/src/browser/property/ItemProperty.d.ts.map +1 -1
  131. package/dist/types/src/browser/property/actors/resolveRemoteStorage.d.ts +3 -3
  132. package/dist/types/src/browser/react/trash.d.ts +1 -1
  133. package/dist/types/src/browser/react/trash.d.ts.map +1 -1
  134. package/dist/types/src/browser/services/db/dbMachine.d.ts +6 -6
  135. package/dist/types/src/browser/services/publish/publishMachine.d.ts +17 -17
  136. package/dist/types/src/types/machines.d.ts +4 -0
  137. package/dist/types/src/types/machines.d.ts.map +1 -1
  138. package/package.json +1 -1
  139. package/dist/index-B2WbNudj.js.map +0 -1
  140. package/dist/index-DWf9Ls94.js.map +0 -1
  141. package/dist/seed.schema.config-mBqth17w.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ import { PropertyData } from '@/types'
2
+ import { getAppDb } from '@/browser/db/sqlWasmClient'
3
+ import { metadata, seeds, versions } from '@/shared/seedSchema'
4
+ import {
5
+ and,
6
+ eq,
7
+ getTableColumns,
8
+ isNotNull,
9
+ isNull,
10
+ or,
11
+ SQL,
12
+ } from 'drizzle-orm'
13
+
14
+ type GetPropertiesForSeedProps = {
15
+ seedLocalId?: string
16
+ seedUid?: string
17
+ edited?: boolean
18
+ }
19
+
20
+ type GetItemProperties = (
21
+ props: GetPropertiesForSeedProps,
22
+ ) => Promise<PropertyData[]>
23
+
24
+ export const getItemProperties: GetItemProperties = async ({
25
+ seedLocalId,
26
+ seedUid,
27
+ edited,
28
+ }) => {
29
+ const appDb = getAppDb()
30
+
31
+ const whereClauses: SQL[] = [isNotNull(metadata.propertyName)]
32
+
33
+ const uidWhereClause: SQL = seedUid
34
+ ? eq(seeds.uid, seedUid)
35
+ : isNull(seeds.uid)
36
+ const localWhereClause: SQL = seedLocalId
37
+ ? eq(seeds.localId, seedLocalId)
38
+ : isNull(seeds.localId)
39
+
40
+ whereClauses.push(or(localWhereClause, uidWhereClause) as SQL)
41
+ whereClauses.push(isNotNull(metadata.propertyName))
42
+ whereClauses.push(isNotNull(metadata.easDataType))
43
+
44
+ if (typeof edited !== 'undefined') {
45
+ if (edited) {
46
+ whereClauses.push(isNull(metadata.uid))
47
+ }
48
+ if (!edited) {
49
+ whereClauses.push(isNotNull(metadata.uid))
50
+ }
51
+ }
52
+
53
+ // if (!seedLocalId || !seedUid) {
54
+ // const seedRows = await appDb
55
+ // .select({
56
+ // localId: seeds.localId,
57
+ // uid: seeds.uid,
58
+ // })
59
+ // .from(seeds)
60
+ // .where(or(localWhereClause, uidWhereClause))
61
+ //
62
+ // if (seedRows && seedRows.length > 0) {
63
+ // seedUid = seedRows[0].uid as string
64
+ // seedLocalId = seedRows[0].localId as string
65
+ // }
66
+ // }
67
+
68
+ const metadataColumns = getTableColumns(metadata)
69
+
70
+ const propertiesData = await appDb
71
+ .select({
72
+ ...metadataColumns,
73
+ })
74
+ .from(seeds)
75
+ .leftJoin(metadata, eq(metadata.seedLocalId, seeds.localId))
76
+ .leftJoin(versions, eq(versions.localId, seeds.localId))
77
+ .where(and(...whereClauses))
78
+ .groupBy(metadata.propertyName)
79
+
80
+ return propertiesData
81
+ }
82
+
83
+ // const localIdWhere = seedLocalId
84
+ // ? `s.local_id = '${seedLocalId}'`
85
+ // : 's.local_id IS NULL'
86
+ // const uidWhere = seedUid ? `s.uid = '${seedUid}'` : 's.uid IS NULL'
87
+ //
88
+ // const queryStatement = `WITH LatestMetadata as (SELECT m.property_name,
89
+ // m.property_value,
90
+ // m.version_local_id,
91
+ // MAX(m.attestation_created_at),
92
+ // m.uid,
93
+ // m.seed_local_id,
94
+ // seed_uid
95
+ // FROM metadata m
96
+ // JOIN seeds s ON s.local_id = m.seed_local_id
97
+ // GROUP BY m.property_name),
98
+ //
99
+ // LatestVersion as (SELECT v.local_id,
100
+ // MAX(v.attestation_created_at) as attestation_created_at,
101
+ // v.uid,
102
+ // v.seed_local_id,
103
+ // v.seed_uid
104
+ // FROM versions v
105
+ // JOIN seeds s ON s.local_id = v.seed_local_id
106
+ // GROUP BY s.local_id)
107
+ //
108
+ //
109
+ // SELECT s.local_id,
110
+ // s.uid,
111
+ // s.schema_uid,
112
+ // m.property_name,
113
+ // m.property_value,
114
+ // COUNT(v.local_id) as versions_count,
115
+ // m.model_type,
116
+ // lv.attestation_created_at,
117
+ // m.local_id,
118
+ // m.uid,
119
+ // MAX(m.attestation_created_at),
120
+ // m.ref_seed_type,
121
+ // m.ref_value_type,
122
+ // m.seed_local_id,
123
+ // m.seed_uid,
124
+ // m.created_at,
125
+ // m.updated_at,
126
+ // m.version_uid
127
+ // FROM seeds s
128
+ // JOIN LatestMetadata lm ON s.local_id = m.seed_local_id
129
+ // JOIN LatestVersion lv ON lv.seed_local_id = m.seed_local_id
130
+ // JOIN metadata m ON m.property_name = lm.property_name OR lm.property_value = s.uid
131
+ // JOIN versions v ON s.local_id = v.seed_local_id
132
+ // WHERE ${localIdWhere}
133
+ // OR ${uidWhere}
134
+ // GROUP BY m.property_name;
135
+ // `
136
+ //
137
+ // const { rows } = await runQueryForStatement(queryStatement)
138
+ //
139
+ // const propertiesDataOld: PropertyData[] = []
140
+ //
141
+ // for (const row of rows) {
142
+ // propertiesDataOld.push({
143
+ // localId: row[0],
144
+ // uid: row[1],
145
+ // schemaUid: row[2],
146
+ // propertyName: row[3],
147
+ // propertyValue: row[4],
148
+ // versionsCount: row[5],
149
+ // itemModelName: row[6],
150
+ // attestationCreatedAt: row[7],
151
+ // metadataLocalId: row[8],
152
+ // metadataUid: row[9],
153
+ // metadataAttestationCreatedAt: row[10],
154
+ // refSeedType: row[11],
155
+ // refValueType: row[12],
156
+ // seedLocalId: row[13],
157
+ // seedUid: row[14],
158
+ // createdAt: row[15],
159
+ // updatedAt: row[16],
160
+ // versionUid: row[17],
161
+ // })
162
+ // }
@@ -0,0 +1,75 @@
1
+ import { ItemData } from '@/types'
2
+ import {
3
+ and,
4
+ count,
5
+ desc,
6
+ eq,
7
+ isNotNull,
8
+ isNull,
9
+ max,
10
+ or,
11
+ SQL,
12
+ sql,
13
+ } from 'drizzle-orm'
14
+ import { seeds, versions } from '@/shared/seedSchema'
15
+ import { getAppDb } from '@/browser/db/sqlWasmClient'
16
+
17
+ type GetItemsDataProps = {
18
+ modelName?: string
19
+ deleted?: boolean
20
+ }
21
+
22
+ type GetItemsData = (props: GetItemsDataProps) => Promise<ItemData[]>
23
+
24
+ export const getItemsData: GetItemsData = async ({
25
+ modelName,
26
+ deleted,
27
+ }): Promise<ItemData[]> => {
28
+ const appDb = getAppDb()
29
+
30
+ const conditions: SQL[] = []
31
+
32
+ if (modelName) {
33
+ conditions.push(eq(seeds.type, modelName.toLowerCase()))
34
+ }
35
+
36
+ if (deleted) {
37
+ conditions.push(
38
+ or(
39
+ isNotNull(seeds._markedForDeletion),
40
+ eq(seeds._markedForDeletion, 1),
41
+ ) as SQL,
42
+ )
43
+ }
44
+
45
+ if (!deleted) {
46
+ conditions.push(
47
+ or(
48
+ isNull(seeds._markedForDeletion),
49
+ eq(seeds._markedForDeletion, 0),
50
+ ) as SQL,
51
+ )
52
+ }
53
+
54
+ let query = appDb
55
+ .select({
56
+ seedLocalId: seeds.localId,
57
+ seedUid: seeds.uid,
58
+ schemaUid: seeds.schemaUid,
59
+ modelName: sql<string>`${modelName}`,
60
+ attestationCreatedAt: seeds.attestationCreatedAt,
61
+ versionsCount: count(versions.localId),
62
+ lastVersionPublishedAt: max(versions.attestationCreatedAt),
63
+ lastLocalUpdateAt: max(versions.createdAt),
64
+ createdAt: seeds.createdAt,
65
+ })
66
+ .from(seeds)
67
+ .leftJoin(versions, eq(seeds.localId, versions.seedLocalId))
68
+ .where(and(...conditions))
69
+ .orderBy(desc(seeds.createdAt))
70
+ .groupBy(seeds.localId)
71
+
72
+ const itemsData = (await query) as ItemData[]
73
+
74
+ return itemsData
75
+ }
@@ -0,0 +1,40 @@
1
+ import { getAppDb } from '@/browser/db'
2
+ import { and, eq, SQL } from 'drizzle-orm'
3
+ import { metadata, MetadataType } from '@/shared/seedSchema'
4
+
5
+ type GetMetadataProps =
6
+ | {
7
+ storageTransactionId?: string
8
+ }
9
+ | undefined
10
+
11
+ type GetMetadata = (
12
+ props: GetMetadataProps,
13
+ ) => Promise<MetadataType | undefined>
14
+
15
+ export const getMetadata: GetMetadata = async (props) => {
16
+ const appDb = getAppDb()
17
+
18
+ let storageTransactionId: string | undefined
19
+ if (props) {
20
+ storageTransactionId = props.storageTransactionId
21
+ }
22
+
23
+ const whereClauses: SQL[] = []
24
+
25
+ if (storageTransactionId) {
26
+ whereClauses.push(eq(metadata.propertyName, 'storageTransactionId'))
27
+ whereClauses.push(eq(metadata.propertyValue, storageTransactionId))
28
+ }
29
+
30
+ const metadataRows = await appDb
31
+ .select()
32
+ .from(metadata)
33
+ .where(and(...whereClauses))
34
+
35
+ if (!metadataRows || metadataRows.length === 0) {
36
+ return
37
+ }
38
+
39
+ return metadataRows[0]
40
+ }
@@ -0,0 +1,88 @@
1
+ import { getModels } from '@/browser/stores/modelClass'
2
+ import { GetSchemasQuery, Schema } from '@/browser/gql/graphql'
3
+ import { getAppDb } from '../sqlWasmClient'
4
+ import { models as modelsTable, modelUids } from '@/shared/seedSchema'
5
+ import { eq } from 'drizzle-orm'
6
+ import pluralize from 'pluralize'
7
+ import { toSnakeCase } from '@/shared/helpers'
8
+ import { easClient, queryClient } from '@/browser/helpers'
9
+ import { GET_SCHEMAS } from '@/browser/item/queries'
10
+
11
+ type GetModelSchemasReturn = {
12
+ modelSchemas: GetSchemasQuery
13
+ schemaStringToModelRecord: Map<string, Schema>
14
+ modelRecords: Record<string, unknown>
15
+ }
16
+ type GetModelSchemas = () => Promise<GetModelSchemasReturn>
17
+
18
+ export const getModelSchemas: GetModelSchemas = async () => {
19
+ const models = getModels()
20
+ const modelRecords = [] as Record<string, unknown>[]
21
+
22
+ const schemaStringToModelRecord = new Map<string, Schema>()
23
+
24
+ const appDb = getAppDb()
25
+
26
+ const OR: Record<string, unknown>[] = []
27
+
28
+ for (const [modelName, _] of Object.entries(models)) {
29
+ const foundModelQuery = await appDb
30
+ .select({
31
+ id: modelsTable.id,
32
+ name: modelsTable.name,
33
+ uid: modelUids.uid,
34
+ })
35
+ .from(modelsTable)
36
+ .leftJoin(modelUids, eq(modelsTable.id, modelUids.modelId))
37
+ .where(eq(modelsTable.name, modelName))
38
+ .limit(1)
39
+
40
+ const foundModel: {
41
+ id: number
42
+ name: string
43
+ uid: string | null
44
+ tableName?: string
45
+ } = { ...foundModelQuery[0] }
46
+
47
+ if (!foundModel) {
48
+ console.error(
49
+ `[item/events] [syncDbWithEas] model ${modelName} not found in SDK DB`,
50
+ )
51
+ return
52
+ }
53
+
54
+ foundModel.tableName = pluralize(foundModel.name).toLowerCase()
55
+
56
+ modelRecords!.push(foundModel)
57
+
58
+ if (modelName === 'Seed' || modelName === 'Version') {
59
+ continue
60
+ }
61
+
62
+ const schemaString = `bytes32 ${toSnakeCase(modelName)}`
63
+
64
+ OR.push({
65
+ schema: {
66
+ equals: `bytes32 ${toSnakeCase(modelName)}`,
67
+ },
68
+ })
69
+
70
+ schemaStringToModelRecord.set(schemaString, foundModel)
71
+ }
72
+
73
+ const modelSchemas = await queryClient.fetchQuery({
74
+ queryKey: [`getSchemasAllModels`],
75
+ queryFn: async () =>
76
+ easClient.request(GET_SCHEMAS, {
77
+ where: {
78
+ OR,
79
+ },
80
+ }),
81
+ })
82
+
83
+ return {
84
+ modelSchemas,
85
+ schemaStringToModelRecord,
86
+ modelRecords,
87
+ }
88
+ }
@@ -0,0 +1,42 @@
1
+ import { EventObject, fromCallback } from 'xstate'
2
+ import {
3
+ FromCallbackInput,
4
+ GetSchemaForModelEvent,
5
+ GlobalMachineContext,
6
+ } from '@/types'
7
+ import debug from 'debug'
8
+
9
+ const logger = debug('app:services:global:actors:getSchemaForModel')
10
+
11
+ export const getSchemaForModel = fromCallback<
12
+ EventObject,
13
+ FromCallbackInput<GlobalMachineContext, GetSchemaForModelEvent>
14
+ >(({ sendBack, input: { context, event } }) => {
15
+ const { modelName } = event
16
+
17
+ if (!modelName) {
18
+ console.warn('No modelName found')
19
+ return
20
+ }
21
+
22
+ const { models } = context
23
+
24
+ if (!models) {
25
+ console.warn('No models found')
26
+ return
27
+ }
28
+
29
+ const model = Object.entries(models).find(
30
+ ([modelNameFromConfig]) => modelNameFromConfig === modelName,
31
+ )
32
+
33
+ if (!model) {
34
+ throw new Error(`Model ${modelName} not found`)
35
+ }
36
+
37
+ logger('[service/actor] [getSchemaForModel] model:', model)
38
+
39
+ sendBack({ type: 'schemaForModel', schema: model.schema })
40
+
41
+ return () => {}
42
+ })
@@ -0,0 +1,34 @@
1
+ import { getAppDb } from '../sqlWasmClient'
2
+ import { seeds, SeedType } from '@/shared/seedSchema'
3
+ import { eq } from 'drizzle-orm'
4
+
5
+ type GetSeedDataProps = {
6
+ seedLocalId?: string
7
+ seedUid?: string
8
+ }
9
+
10
+ type GetSeedData = (props: GetSeedDataProps) => Promise<SeedType | undefined>
11
+
12
+ export const getSeedData: GetSeedData = async ({ seedLocalId, seedUid }) => {
13
+ const appDb = getAppDb()
14
+
15
+ let query
16
+
17
+ const queryBase = appDb.select().from(seeds)
18
+
19
+ if (seedLocalId) {
20
+ query = queryBase.where(eq(seeds.localId, seedLocalId))
21
+ }
22
+
23
+ if (seedUid) {
24
+ query = queryBase.where(eq(seeds.uid, seedUid))
25
+ }
26
+
27
+ const rows = await query
28
+
29
+ if (!rows || !rows.length) {
30
+ return
31
+ }
32
+
33
+ return rows[0]
34
+ }
@@ -0,0 +1,58 @@
1
+ import { runQueryForStatement } from '../sqlWasmClient'
2
+
3
+ type VersionData = {
4
+ localId: string
5
+ uid: string
6
+ seedLocalId: string
7
+ seedUid: string
8
+ seedType: string
9
+ note: string
10
+ attestationCreatedAt: string
11
+ attestationRaw: string
12
+ createdAt: string
13
+ updatedAt: string
14
+ }
15
+
16
+ type GetVersionDataProps = {
17
+ seedLocalId: string
18
+ }
19
+
20
+ type GetVersionData = (
21
+ props: GetVersionDataProps,
22
+ ) => Promise<VersionData | undefined>
23
+
24
+ export const getVersionData: GetVersionData = async ({ seedLocalId }) => {
25
+ const getVersionStatement = `SELECT local_id,
26
+ uid,
27
+ seed_local_id,
28
+ seed_uid,
29
+ seed_type,
30
+ note,
31
+ attestation_created_at,
32
+ attestation_raw,
33
+ created_at,
34
+ updated_at
35
+ FROM versions
36
+ WHERE local_id = '${seedLocalId}';`
37
+
38
+ const { rows } = await runQueryForStatement(getVersionStatement)
39
+
40
+ if (!rows || !rows.length) {
41
+ return
42
+ }
43
+
44
+ const seedValues = rows[0]
45
+
46
+ return {
47
+ localId: seedValues[0],
48
+ uid: seedValues[1],
49
+ seedLocalId: seedValues[2],
50
+ seedUid: seedValues[3],
51
+ seedType: seedValues[4],
52
+ note: seedValues[5],
53
+ attestationCreatedAt: seedValues[6],
54
+ attestationRaw: seedValues[7],
55
+ createdAt: seedValues[8],
56
+ updatedAt: seedValues[9],
57
+ }
58
+ }
@@ -0,0 +1,39 @@
1
+ import { runQueryForStatement } from '../sqlWasmClient'
2
+
3
+ type VersionData = {
4
+ localId: string
5
+ uid: string
6
+ seedUid: string
7
+ seedLocalId: string
8
+ }
9
+ type GetVersionsForVersionUids = (
10
+ versionUids: string[],
11
+ ) => Promise<VersionData[]>
12
+ export const getVersionsForVersionUids: GetVersionsForVersionUids = async (
13
+ versionUids: string[],
14
+ ) => {
15
+ const queryStatement = `
16
+ SELECT local_id, uid, seed_uid, seed_local_id
17
+ FROM versions
18
+ WHERE uid IN ('${versionUids.join("','")}');
19
+ `
20
+
21
+ const { rows } = await runQueryForStatement(queryStatement)
22
+
23
+ if (!rows || rows.length === 0) {
24
+ return []
25
+ }
26
+
27
+ const versionsData: VersionData[] = []
28
+
29
+ for (const row of rows) {
30
+ versionsData.push({
31
+ localId: row[0],
32
+ uid: row[1],
33
+ seedUid: row[2],
34
+ seedLocalId: row[3],
35
+ })
36
+ }
37
+
38
+ return versionsData
39
+ }