@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.
- package/dist/bin.js.map +1 -1
- package/dist/constants-BLctWkrn.js.map +1 -1
- package/dist/{index-DWf9Ls94.js → index-DMIKRod-.js} +3995 -3995
- package/dist/index-DMIKRod-.js.map +1 -0
- package/dist/{index-B2WbNudj.js → index-wKss7188.js} +10 -10
- package/dist/index-wKss7188.js.map +1 -0
- package/dist/main.js +7 -7
- package/dist/{seed.schema.config-mBqth17w.js → seed.schema.config-C0M8Rcti.js} +7 -7
- package/dist/seed.schema.config-C0M8Rcti.js.map +1 -0
- package/dist/src/AppStateSchema.ts +10 -0
- package/dist/src/Attestation.ts +21 -0
- package/dist/src/ConfigSchema.ts +15 -0
- package/dist/src/ItemProperty.ts +383 -0
- package/dist/src/MetadataSchema.ts +28 -0
- package/dist/src/ModelSchema.ts +46 -0
- package/dist/src/ModelUidSchema.ts +16 -0
- package/dist/src/PropertyUidSchema.ts +16 -0
- package/dist/src/Schema.ts +17 -0
- package/dist/src/SeedSchema.ts +29 -0
- package/dist/src/VersionSchema.ts +16 -0
- package/dist/src/actors.ts +10 -0
- package/dist/src/addModelsToDb.ts +150 -0
- package/dist/src/allItems.ts +23 -0
- package/dist/src/arweave.ts +37 -0
- package/dist/src/browser.app.db.config.ts +27 -0
- package/dist/src/browser.seed.db.config.ts +33 -0
- package/dist/src/browser.ts +30 -0
- package/dist/src/checkStatus.ts +50 -0
- package/dist/src/client.ts +85 -0
- package/dist/src/configureFs.ts +81 -0
- package/dist/src/connectToDb.ts +74 -0
- package/dist/src/connectionManager.ts +67 -0
- package/dist/src/constants.ts +118 -0
- package/dist/src/create.ts +39 -0
- package/dist/src/createItem.ts +15 -0
- package/dist/src/createItemMachine.ts +37 -0
- package/dist/src/createPublishAttempt.ts +16 -0
- package/dist/src/createSeeds.ts +24 -0
- package/dist/src/createVersion.ts +33 -0
- package/dist/src/db.ts +247 -0
- package/dist/src/dbMachine.ts +181 -0
- package/dist/src/deleteItem.ts +19 -0
- package/dist/src/download.ts +289 -0
- package/dist/src/drizzle.ts +82 -0
- package/dist/src/environment.ts +15 -0
- package/dist/src/eventBus.ts +5 -0
- package/dist/src/events.ts +14 -0
- package/dist/src/fetchDataFromEas.ts +90 -0
- package/dist/src/fetchDbData.ts +16 -0
- package/dist/src/fetchRelatedItems.ts +179 -0
- package/dist/src/fetchSeeds.ts +44 -0
- package/dist/src/fetchVersions.ts +41 -0
- package/dist/src/files.ts +16 -0
- package/dist/src/fragment-masking.ts +87 -0
- package/dist/src/fsProxy.ts +36 -0
- package/dist/src/getItem.ts +189 -0
- package/dist/src/getItemProperties.ts +162 -0
- package/dist/src/getItems.ts +75 -0
- package/dist/src/getMetadata.ts +40 -0
- package/dist/src/getModelSchemas.ts +88 -0
- package/dist/src/getSchemaForModel.ts +42 -0
- package/dist/src/getSeedData.ts +34 -0
- package/dist/src/getVersionData.ts +58 -0
- package/dist/src/getVersionsForVersionUids.ts +39 -0
- package/dist/src/globalMachine.ts +259 -0
- package/dist/src/gql.ts +113 -0
- package/dist/src/graphql.ts +3201 -0
- package/dist/src/helpers.ts +150 -0
- package/dist/src/hydrateExistingItem.ts +137 -0
- package/dist/src/hydrateFromDb.ts +254 -0
- package/dist/src/hydrateNewItem.ts +34 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.ts +21 -0
- package/dist/src/init.ts +61 -0
- package/dist/src/initialize.ts +127 -0
- package/dist/src/internalMachine.ts +220 -0
- package/dist/src/item.ts +324 -0
- package/dist/src/itemMachineAll.ts +158 -0
- package/dist/src/itemMachineSingle.ts +175 -0
- package/dist/src/loadAppDb.ts +47 -0
- package/dist/src/logger.ts +33 -0
- package/dist/src/machine.ts +55 -0
- package/dist/src/machines.ts +58 -0
- package/dist/src/migrate.ts +288 -0
- package/dist/src/model.ts +71 -0
- package/dist/src/modelClass.ts +19 -0
- package/dist/src/node.app.db.config.ts +40 -0
- package/dist/src/prepareDb.ts +34 -0
- package/dist/src/preparePublishRequestData.ts +81 -0
- package/dist/src/processItems.ts +71 -0
- package/dist/src/property.ts +161 -0
- package/dist/src/propertyMachine.ts +154 -0
- package/dist/src/publish.ts +31 -0
- package/dist/src/publishMachine.ts +77 -0
- package/dist/src/queries.ts +13 -0
- package/dist/src/read.ts +174 -0
- package/dist/src/recoverDeletedItem.ts +14 -0
- package/dist/src/request.ts +54 -0
- package/dist/src/requestAll.ts +157 -0
- package/dist/src/resolveRelatedValue.ts +348 -0
- package/dist/src/resolveRemoteStorage.ts +87 -0
- package/dist/src/save.ts +183 -0
- package/dist/src/saveConfig.ts +79 -0
- package/dist/src/saveDataToDb.ts +145 -0
- package/dist/src/saveMetadata.ts +18 -0
- package/dist/src/saveValueToDb.ts +94 -0
- package/dist/src/seed.schema.config.ts +25 -0
- package/dist/src/seed.ts +37 -0
- package/dist/src/seedData.ts +0 -0
- package/dist/src/seedProtocol.ts +17 -0
- package/dist/src/services.ts +359 -0
- package/dist/src/sqlWasmClient.ts +88 -0
- package/dist/src/syncDbWithEas.ts +686 -0
- package/dist/src/trash.ts +29 -0
- package/dist/src/ts-to-proto.ts +101 -0
- package/dist/src/types.ts +12 -0
- package/dist/src/upload.ts +86 -0
- package/dist/src/validate.ts +42 -0
- package/dist/src/validateInput.ts +33 -0
- package/dist/src/validateItemData.ts +20 -0
- package/dist/src/waitForDb.ts +23 -0
- package/dist/src/wasm.d.ts +8300 -0
- package/dist/src/write.ts +366 -0
- package/dist/types/src/browser/db/read/getModelSchemas.d.ts.map +1 -1
- package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts +3 -1
- package/dist/types/src/browser/item/single/actors/hydrateExistingItem.d.ts.map +1 -1
- package/dist/types/src/browser/item/single/actors/saveDataToDb.d.ts +3 -3
- package/dist/types/src/browser/item/single/itemMachineSingle.d.ts +3 -3
- package/dist/types/src/browser/property/ItemProperty.d.ts +7 -7
- package/dist/types/src/browser/property/ItemProperty.d.ts.map +1 -1
- package/dist/types/src/browser/property/actors/resolveRemoteStorage.d.ts +3 -3
- package/dist/types/src/browser/react/trash.d.ts +1 -1
- package/dist/types/src/browser/react/trash.d.ts.map +1 -1
- package/dist/types/src/browser/services/db/dbMachine.d.ts +6 -6
- package/dist/types/src/browser/services/publish/publishMachine.d.ts +17 -17
- package/dist/types/src/types/machines.d.ts +4 -0
- package/dist/types/src/types/machines.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/index-B2WbNudj.js.map +0 -1
- package/dist/index-DWf9Ls94.js.map +0 -1
- 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
|
+
}
|