@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.
- package/dist/addModel.js +93 -0
- package/dist/addModel.js.map +1 -0
- package/dist/bin.js +8 -5
- package/dist/bin.js.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/protos/seed.proto +97 -0
- package/dist/rpcServer.js +358 -0
- package/dist/rpcServer.js.map +1 -0
- package/dist/scripts/addModel.d.ts +3 -0
- package/dist/scripts/addModel.d.ts.map +1 -0
- package/dist/scripts/bin.d.ts.map +1 -1
- package/dist/scripts/rpcServer.cursor.d.ts +2 -0
- package/dist/scripts/rpcServer.cursor.d.ts.map +1 -0
- package/dist/scripts/rpcServer.d.ts +3 -0
- package/dist/scripts/rpcServer.d.ts.map +1 -0
- package/dist/scripts/vite.config.d.ts +3 -0
- package/dist/scripts/vite.config.d.ts.map +1 -0
- package/dist/seedSchema/AppStateSchema.ts +2 -2
- package/dist/seedSchema/ConfigSchema.ts +18 -14
- package/dist/seedSchema/MetadataSchema.ts +2 -1
- package/dist/seedSchema/ModelSchema.ts +3 -3
- package/dist/seedSchema/SeedSchema.ts +2 -1
- package/dist/seedSchema/VersionSchema.ts +2 -1
- package/dist/seedSchema/index.ts +1 -0
- package/dist/src/Item/BaseItem.d.ts +1 -1
- package/dist/src/Item/BaseItem.d.ts.map +1 -1
- package/dist/src/Item/BaseItem.js.map +1 -1
- package/dist/src/ItemProperty/BaseItemProperty.d.ts +55 -192
- package/dist/src/ItemProperty/BaseItemProperty.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts +2 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js +2 -1
- package/dist/src/ItemProperty/service/actors/hydrateFromDb.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/initialize.d.ts +2 -1
- package/dist/src/ItemProperty/service/actors/initialize.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts +2 -1
- package/dist/src/ItemProperty/service/actors/resolveRelatedValue.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts +2 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js +1 -1
- package/dist/src/ItemProperty/service/actors/resolveRemoteStorage.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts +2 -2
- package/dist/src/ItemProperty/service/actors/saveValueToDb/analyzeInput.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts +2 -2
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveImage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts +2 -2
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js +1 -0
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveItemStorage.js.map +1 -1
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts +2 -2
- package/dist/src/ItemProperty/service/actors/saveValueToDb/saveRelation.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/actors/waitForDb.d.ts +2 -2
- package/dist/src/ItemProperty/service/actors/waitForDb.d.ts.map +1 -1
- package/dist/src/ItemProperty/service/propertyMachine.d.ts +60 -195
- package/dist/src/ItemProperty/service/propertyMachine.d.ts.map +1 -1
- package/dist/src/browser/helpers/FileManager.d.ts +1 -0
- package/dist/src/browser/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/browser/helpers/FileManager.js +3 -0
- package/dist/src/browser/helpers/FileManager.js.map +1 -1
- package/dist/src/browser/react/services.js +1 -0
- package/dist/src/browser/react/services.js.map +1 -1
- package/dist/src/client/ClientManager.js +1 -0
- package/dist/src/client/ClientManager.js.map +1 -1
- package/dist/src/client/actors/initialize.d.ts.map +1 -1
- package/dist/src/client/actors/initialize.js +28 -14
- package/dist/src/client/actors/initialize.js.map +1 -1
- package/dist/src/client/actors/saveAppState.js +1 -0
- package/dist/src/client/actors/saveAppState.js.map +1 -1
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/client/index.d.ts.map +1 -1
- package/dist/src/db/Db/BaseDb.d.ts +1 -0
- package/dist/src/db/Db/BaseDb.d.ts.map +1 -1
- package/dist/src/db/Db/BaseDb.js +3 -0
- package/dist/src/db/Db/BaseDb.js.map +1 -1
- package/dist/src/db/read/getExistingItem.js +1 -0
- package/dist/src/db/read/getExistingItem.js.map +1 -1
- package/dist/src/db/read/getItemData.js +1 -0
- package/dist/src/db/read/getItemData.js.map +1 -1
- package/dist/src/db/read/getItemProperties.js +1 -0
- package/dist/src/db/read/getItemProperties.js.map +1 -1
- package/dist/src/db/read/getItemProperty.js +1 -0
- package/dist/src/db/read/getItemProperty.js.map +1 -1
- package/dist/src/db/read/getItems.js +1 -0
- package/dist/src/db/read/getItems.js.map +1 -1
- package/dist/src/db/read/getMetadata.js +1 -0
- package/dist/src/db/read/getMetadata.js.map +1 -1
- package/dist/src/db/read/getModelSchemas.js +1 -0
- package/dist/src/db/read/getModelSchemas.js.map +1 -1
- package/dist/src/db/read/getModels.js +1 -0
- package/dist/src/db/read/getModels.js.map +1 -1
- package/dist/src/db/read/getPropertyData.js +1 -0
- package/dist/src/db/read/getPropertyData.js.map +1 -1
- package/dist/src/db/read/getRelationValueData.js +1 -0
- package/dist/src/db/read/getRelationValueData.js.map +1 -1
- package/dist/src/db/read/getSeedData.js +1 -0
- package/dist/src/db/read/getSeedData.js.map +1 -1
- package/dist/src/db/read/getStorageTransactionIdForSeedUid.js +1 -0
- package/dist/src/db/read/getStorageTransactionIdForSeedUid.js.map +1 -1
- package/dist/src/db/read/getVersionData.js +1 -0
- package/dist/src/db/read/getVersionData.js.map +1 -1
- package/dist/src/db/read/subqueries/metadataLatest.js +1 -0
- package/dist/src/db/read/subqueries/metadataLatest.js.map +1 -1
- package/dist/src/db/read/subqueries/versionData.js +1 -0
- package/dist/src/db/read/subqueries/versionData.js.map +1 -1
- package/dist/src/db/write/createMetadata.js +1 -0
- package/dist/src/db/write/createMetadata.js.map +1 -1
- package/dist/src/db/write/createSeed.js +1 -0
- package/dist/src/db/write/createSeed.js.map +1 -1
- package/dist/src/db/write/createSeeds.js +1 -0
- package/dist/src/db/write/createSeeds.js.map +1 -1
- package/dist/src/db/write/createVersion.js +1 -0
- package/dist/src/db/write/createVersion.js.map +1 -1
- package/dist/src/db/write/deleteItem.js +1 -0
- package/dist/src/db/write/deleteItem.js.map +1 -1
- package/dist/src/db/write/saveAppState.js +1 -0
- package/dist/src/db/write/saveAppState.js.map +1 -1
- package/dist/src/db/write/saveMetadata.js +1 -0
- package/dist/src/db/write/saveMetadata.js.map +1 -1
- package/dist/src/db/write/updateItemPropertyValue.js +1 -0
- package/dist/src/db/write/updateItemPropertyValue.js.map +1 -1
- package/dist/src/db/write/updateMetadata.js +1 -0
- package/dist/src/db/write/updateMetadata.js.map +1 -1
- package/dist/src/events/files/download.js +1 -0
- package/dist/src/events/files/download.js.map +1 -1
- package/dist/src/events/item/syncDbWithEas.js +1 -0
- package/dist/src/events/item/syncDbWithEas.js.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts +2 -1
- package/dist/src/helpers/FileManager/BaseFileManager.d.ts.map +1 -1
- package/dist/src/helpers/FileManager/BaseFileManager.js +3 -0
- package/dist/src/helpers/FileManager/BaseFileManager.js.map +1 -1
- package/dist/src/helpers/db.js +1 -0
- package/dist/src/helpers/db.js.map +1 -1
- package/dist/src/helpers/environment.js +6 -1
- package/dist/src/helpers/environment.js.map +1 -1
- package/dist/src/helpers/index.d.ts.map +1 -1
- package/dist/src/helpers/index.js.map +1 -1
- package/dist/src/interfaces/IItem.d.ts +1 -1
- package/dist/src/interfaces/IItem.d.ts.map +1 -1
- package/dist/src/node/Item/Item.js +11 -0
- package/dist/src/node/Item/Item.js.map +1 -0
- package/dist/src/node/ItemProperty/ItemProperty.js +10 -0
- package/dist/src/node/ItemProperty/ItemProperty.js.map +1 -0
- package/dist/src/node/codegen/drizzle.js +36 -2
- package/dist/src/node/codegen/drizzle.js.map +1 -1
- package/dist/src/node/db/Db.d.ts.map +1 -1
- package/dist/src/node/db/Db.js +64 -0
- package/dist/src/node/db/Db.js.map +1 -0
- package/dist/src/node/helpers/FileManager.d.ts +1 -0
- package/dist/src/node/helpers/FileManager.d.ts.map +1 -1
- package/dist/src/node/helpers/FileManager.js +53 -0
- package/dist/src/node/helpers/FileManager.js.map +1 -0
- package/dist/src/seedSchema/AppStateSchema.d.ts +2 -1
- package/dist/src/seedSchema/AppStateSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/AppStateSchema.js.map +1 -1
- package/dist/src/seedSchema/ConfigSchema.d.ts +2 -0
- package/dist/src/seedSchema/ConfigSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/ConfigSchema.js +5 -8
- package/dist/src/seedSchema/ConfigSchema.js.map +1 -1
- package/dist/src/seedSchema/MetadataSchema.d.ts +2 -1
- package/dist/src/seedSchema/MetadataSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/MetadataSchema.js.map +1 -1
- package/dist/src/seedSchema/ModelSchema.d.ts +3 -2
- package/dist/src/seedSchema/ModelSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/ModelSchema.js.map +1 -1
- package/dist/src/seedSchema/SeedSchema.d.ts +2 -1
- package/dist/src/seedSchema/SeedSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/SeedSchema.js.map +1 -1
- package/dist/src/seedSchema/VersionSchema.d.ts +2 -1
- package/dist/src/seedSchema/VersionSchema.d.ts.map +1 -1
- package/dist/src/seedSchema/VersionSchema.js.map +1 -1
- package/dist/src/seedSchema/index.d.ts +1 -0
- package/dist/src/seedSchema/index.d.ts.map +1 -1
- package/dist/src/services/allItems/actors/fetchRelatedItems.js +1 -0
- package/dist/src/services/allItems/actors/fetchRelatedItems.js.map +1 -1
- package/dist/src/services/allItems/actors/initialize.js +1 -0
- package/dist/src/services/allItems/actors/initialize.js.map +1 -1
- package/dist/src/services/global/actors/addModelsToDb.js +1 -0
- package/dist/src/services/global/actors/addModelsToDb.js.map +1 -1
- package/dist/src/services/global/actors/initialize.js +1 -0
- package/dist/src/services/global/actors/initialize.js.map +1 -1
- package/dist/src/services/internal/actors/saveConfig.d.ts.map +1 -1
- package/dist/src/services/internal/actors/saveConfig.js +16 -29
- package/dist/src/services/internal/actors/saveConfig.js.map +1 -1
- package/dist/src/services/internal/helpers.d.ts.map +1 -1
- package/dist/src/services/internal/helpers.js +2 -2
- package/dist/src/services/internal/helpers.js.map +1 -1
- package/dist/src/services/publish/actors/preparePublishRequestData.js +1 -0
- package/dist/src/services/publish/actors/preparePublishRequestData.js.map +1 -1
- package/dist/src/types/item.d.ts +9 -8
- package/dist/src/types/item.d.ts.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import grpc from '@grpc/grpc-js';
|
|
4
|
+
import protoLoader from '@grpc/proto-loader';
|
|
5
|
+
import { BaseItem } from './src/Item/BaseItem.js';
|
|
6
|
+
import { getModel, getModelNames } from './src/stores/modelClass.js';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
// Load protobuf
|
|
12
|
+
const PROTO_PATH = path.resolve(__dirname, './protos/seed.proto');
|
|
13
|
+
const packageDefinition = protoLoader.loadSync(PROTO_PATH, {
|
|
14
|
+
keepCase: true,
|
|
15
|
+
longs: String,
|
|
16
|
+
enums: String,
|
|
17
|
+
defaults: true,
|
|
18
|
+
oneofs: true
|
|
19
|
+
});
|
|
20
|
+
const seedProto = grpc.loadPackageDefinition(packageDefinition).seed;
|
|
21
|
+
// In-memory cache to store BaseItems by model and ID
|
|
22
|
+
const BaseItemsCache = {};
|
|
23
|
+
/**
|
|
24
|
+
* Implements the SeedService gRPC service
|
|
25
|
+
*/
|
|
26
|
+
const server = {
|
|
27
|
+
// Model operations
|
|
28
|
+
GetModels: (call, callback) => {
|
|
29
|
+
try {
|
|
30
|
+
const modelNames = getModelNames();
|
|
31
|
+
const models = [];
|
|
32
|
+
for (const modelName of modelNames) {
|
|
33
|
+
const model = getModel(modelName);
|
|
34
|
+
if (!model) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const props = Object.keys(model.schema).map(propName => {
|
|
38
|
+
const prop = model.schema[propName];
|
|
39
|
+
return {
|
|
40
|
+
name: propName,
|
|
41
|
+
type: prop?.dataType || 'Text',
|
|
42
|
+
relation_model: prop?.refModelId ? getModel(prop.ref) : '',
|
|
43
|
+
is_list: prop?.dataType === 'List'
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
models.push({
|
|
47
|
+
name: modelName,
|
|
48
|
+
properties: props
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
callback(null, { models });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
callback({
|
|
55
|
+
code: grpc.status.INTERNAL,
|
|
56
|
+
message: `Error getting models: ${error.message}`
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
GetModel: (call, callback) => {
|
|
61
|
+
try {
|
|
62
|
+
const { model_name } = call.request;
|
|
63
|
+
const model = getModel(model_name);
|
|
64
|
+
if (!model) {
|
|
65
|
+
return callback({
|
|
66
|
+
code: grpc.status.NOT_FOUND,
|
|
67
|
+
message: `Model ${model_name} not found`
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
const props = Object.keys(model.prototype).map(propName => {
|
|
71
|
+
const prop = model.prototype[propName];
|
|
72
|
+
return {
|
|
73
|
+
name: propName,
|
|
74
|
+
type: prop.type || 'text',
|
|
75
|
+
relation_model: prop.relationModel || '',
|
|
76
|
+
is_list: prop.isList || false
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
callback(null, {
|
|
80
|
+
model: {
|
|
81
|
+
name: model_name,
|
|
82
|
+
properties: props
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
callback({
|
|
88
|
+
code: grpc.status.INTERNAL,
|
|
89
|
+
message: `Error getting model: ${error.message}`
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
// BaseItem operations
|
|
94
|
+
CreateItem: async (call, callback) => {
|
|
95
|
+
try {
|
|
96
|
+
const { model_name, properties } = call.request;
|
|
97
|
+
const ModelClass = getModel(model_name);
|
|
98
|
+
if (!ModelClass) {
|
|
99
|
+
return callback({
|
|
100
|
+
code: grpc.status.NOT_FOUND,
|
|
101
|
+
message: `Model ${model_name} not found`
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Process properties to handle relations and lists
|
|
105
|
+
const processedProps = {};
|
|
106
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
107
|
+
// Handle relationship properties and lists based on model definition
|
|
108
|
+
const prop = ModelClass.prototype[key];
|
|
109
|
+
if (prop && prop.isList) {
|
|
110
|
+
processedProps[key] = JSON.parse(value);
|
|
111
|
+
}
|
|
112
|
+
else if (prop && prop.relationModel) {
|
|
113
|
+
// Assuming relation is stored as stringified ID
|
|
114
|
+
processedProps[key] = value;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
processedProps[key] = value;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const item = await BaseItem.create(processedProps);
|
|
121
|
+
// Cache the BaseItem
|
|
122
|
+
if (!itemsCache[model_name]) {
|
|
123
|
+
BaseItemsCache[model_name] = {};
|
|
124
|
+
}
|
|
125
|
+
BaseItemsCache[model_name][item.id] = BaseItem;
|
|
126
|
+
// Return the created BaseItem
|
|
127
|
+
callback(null, {
|
|
128
|
+
id: BaseItem.id,
|
|
129
|
+
model_name,
|
|
130
|
+
properties: properties
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
callback({
|
|
135
|
+
code: grpc.status.INTERNAL,
|
|
136
|
+
message: `Error creating BaseItem: ${error.message}`
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
GetItem: async (call, callback) => {
|
|
141
|
+
try {
|
|
142
|
+
const { id, model_name } = call.request;
|
|
143
|
+
// Try to get from cache
|
|
144
|
+
const item = await BaseItem.find({
|
|
145
|
+
seedLocalId: id,
|
|
146
|
+
modelName: model_name
|
|
147
|
+
});
|
|
148
|
+
if (!item) {
|
|
149
|
+
return callback({
|
|
150
|
+
code: grpc.status.NOT_FOUND,
|
|
151
|
+
message: `Item ${id} not found`
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
// Convert properties to simple strings for gRPC
|
|
155
|
+
const properties = {};
|
|
156
|
+
for (const [key, value] of Object.entries(item)) {
|
|
157
|
+
if (key !== 'id' && key !== 'modelName') {
|
|
158
|
+
if (Array.isArray(value)) {
|
|
159
|
+
properties[key] = JSON.stringify(value);
|
|
160
|
+
}
|
|
161
|
+
else if (typeof value === 'object' && value !== null) {
|
|
162
|
+
properties[key] = JSON.stringify(value);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
properties[key] = String(value);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
callback(null, {
|
|
170
|
+
id,
|
|
171
|
+
model_name,
|
|
172
|
+
properties
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
callback({
|
|
177
|
+
code: grpc.status.INTERNAL,
|
|
178
|
+
message: `Error getting BaseItem: ${error.message}`
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
UpdateItem: async (call, callback) => {
|
|
183
|
+
try {
|
|
184
|
+
const { id, model_name, properties } = call.request;
|
|
185
|
+
// Try to get from cache
|
|
186
|
+
let item = await BaseItem.find({
|
|
187
|
+
seedLocalId: id,
|
|
188
|
+
modelName: model_name
|
|
189
|
+
});
|
|
190
|
+
if (!item) {
|
|
191
|
+
return callback({
|
|
192
|
+
code: grpc.status.NOT_FOUND,
|
|
193
|
+
message: `Item ${id} not found`
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Update properties
|
|
197
|
+
for (const [key, value] of Object.entries(properties)) {
|
|
198
|
+
const prop = BaseItem.constructor.prototype[key];
|
|
199
|
+
if (prop && prop.isList) {
|
|
200
|
+
item[key] = JSON.parse(value);
|
|
201
|
+
}
|
|
202
|
+
else if (prop && prop.relationModel) {
|
|
203
|
+
item[key] = value;
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
item[key] = value;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Save the updated BaseItem
|
|
210
|
+
await BaseItem.save();
|
|
211
|
+
// Return the updated BaseItem
|
|
212
|
+
callback(null, {
|
|
213
|
+
id,
|
|
214
|
+
model_name,
|
|
215
|
+
properties: properties
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
callback({
|
|
220
|
+
code: grpc.status.INTERNAL,
|
|
221
|
+
message: `Error updating BaseItem: ${error.message}`
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
DeleteItem: async (call, callback) => {
|
|
226
|
+
try {
|
|
227
|
+
const { id, model_name } = call.request;
|
|
228
|
+
// Try to get from cache
|
|
229
|
+
const BaseItem = BaseItemsCache[model_name]?.[id];
|
|
230
|
+
if (!item) {
|
|
231
|
+
return callback({
|
|
232
|
+
code: grpc.status.NOT_FOUND,
|
|
233
|
+
message: `Item ${id} not found`
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Delete the BaseItem
|
|
237
|
+
await BaseItem.delete();
|
|
238
|
+
// Remove from cache
|
|
239
|
+
delete BaseItemsCache[model_name][id];
|
|
240
|
+
callback(null, {
|
|
241
|
+
success: true,
|
|
242
|
+
message: `Item ${id} deleted successfully`
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
callback({
|
|
247
|
+
code: grpc.status.INTERNAL,
|
|
248
|
+
message: `Error deleting BaseItem: ${error.message}`
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
PublishItem: async (call, callback) => {
|
|
253
|
+
try {
|
|
254
|
+
const { id, model_name } = call.request;
|
|
255
|
+
// Try to get from cache
|
|
256
|
+
const item = await BaseItem.find({
|
|
257
|
+
seedLocalId: id,
|
|
258
|
+
modelName: model_name
|
|
259
|
+
});
|
|
260
|
+
if (!item) {
|
|
261
|
+
return callback({
|
|
262
|
+
code: grpc.status.NOT_FOUND,
|
|
263
|
+
message: `Item ${id} not found`
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
// Publish the BaseItem
|
|
267
|
+
await item.publish();
|
|
268
|
+
callback(null, {
|
|
269
|
+
success: true,
|
|
270
|
+
message: `Item ${id} published successfully`
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
callback({
|
|
275
|
+
code: grpc.status.INTERNAL,
|
|
276
|
+
message: `Error publishing BaseItem: ${error.message}`
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
QueryItems: async (call, callback) => {
|
|
281
|
+
try {
|
|
282
|
+
const { model_name, filters, limit, offset } = call.request;
|
|
283
|
+
// Simple in-memory implementation - in production, you'd query the SDK
|
|
284
|
+
// Get all BaseItems for the model
|
|
285
|
+
const modelItems = BaseItemsCache[model_name] || {};
|
|
286
|
+
let items = Object.values(modelItems);
|
|
287
|
+
// Apply filters
|
|
288
|
+
if (filters) {
|
|
289
|
+
items = items.filter(item => {
|
|
290
|
+
return Object.entries(filters).every(([key, value]) => {
|
|
291
|
+
return item[key] === value;
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
// Apply pagination
|
|
296
|
+
if (offset) {
|
|
297
|
+
items = items.slice(offset);
|
|
298
|
+
}
|
|
299
|
+
if (limit) {
|
|
300
|
+
items = items.slice(0, limit);
|
|
301
|
+
}
|
|
302
|
+
// Format response
|
|
303
|
+
const responseItems = items.map(item => {
|
|
304
|
+
const properties = {};
|
|
305
|
+
for (const [key, value] of Object.entries(item)) {
|
|
306
|
+
if (key !== 'id' && key !== 'modelName') {
|
|
307
|
+
if (Array.isArray(value)) {
|
|
308
|
+
properties[key] = JSON.stringify(value);
|
|
309
|
+
}
|
|
310
|
+
else if (typeof value === 'object' && value !== null) {
|
|
311
|
+
properties[key] = JSON.stringify(value);
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
properties[key] = String(value);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
id: item.seedLocalId,
|
|
320
|
+
model_name,
|
|
321
|
+
properties
|
|
322
|
+
};
|
|
323
|
+
});
|
|
324
|
+
callback(null, { items: responseItems });
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
callback({
|
|
328
|
+
code: grpc.status.INTERNAL,
|
|
329
|
+
message: `Error querying BaseItems: ${error.message}`
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Start the gRPC server
|
|
336
|
+
*/
|
|
337
|
+
function startServer() {
|
|
338
|
+
const grpcServer = new grpc.Server();
|
|
339
|
+
grpcServer.addService(seedProto.SeedService.service, server);
|
|
340
|
+
grpcServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (err, port) => {
|
|
341
|
+
if (err) {
|
|
342
|
+
console.error('Failed to bind server:', err);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
console.log(`Server running at http://0.0.0.0:${port}`);
|
|
346
|
+
});
|
|
347
|
+
// Handle graceful shutdown
|
|
348
|
+
process.on('SIGINT', () => {
|
|
349
|
+
console.log('Shutting down gRPC server');
|
|
350
|
+
grpcServer.tryShutdown(() => {
|
|
351
|
+
console.log('Server stopped');
|
|
352
|
+
process.exit(0);
|
|
353
|
+
});
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
// Start the server
|
|
357
|
+
startServer();
|
|
358
|
+
//# sourceMappingURL=rpcServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpcServer.js","sources":["../../scripts/rpcServer.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport path from 'path';\nimport grpc from '@grpc/grpc-js';\nimport protoLoader from '@grpc/proto-loader';\nimport { BaseItem, } from '@/Item/BaseItem';\nimport { getModels, getModel, getModelNames, } from '@/stores/modelClass';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\n// Load protobuf\nconst PROTO_PATH = path.resolve(__dirname, './protos/seed.proto');\nconst packageDefinition = protoLoader.loadSync(PROTO_PATH, {\n keepCase: true,\n longs: String,\n enums: String,\n defaults: true,\n oneofs: true\n});\n\nconst seedProto = grpc.loadPackageDefinition(packageDefinition).seed;\n\n// In-memory cache to store BaseItems by model and ID\nconst BaseItemsCache = {};\n\n/**\n * Implements the SeedService gRPC service\n */\nconst server = {\n // Model operations\n GetModels: (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const modelNames = getModelNames();\n\n const models = [];\n\n for (const modelName of modelNames) {\n const model = getModel(modelName);\n if (!model) {\n continue;\n }\n const props = Object.keys(model.schema).map(propName => {\n const prop = model.schema[propName];\n return {\n name: propName,\n type: prop?.dataType || 'Text',\n relation_model: prop?.refModelId ? getModel(prop.ref) : '',\n is_list: prop?.dataType === 'List'\n };\n });\n\n models.push({\n name: modelName,\n properties: props\n });\n }\n\n callback(null, { models });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting models: ${error.message}`\n });\n }\n },\n\n GetModel: (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { model_name } = call.request;\n const model = getModel(model_name);\n \n if (!model) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Model ${model_name} not found`\n });\n }\n\n const props = Object.keys(model.prototype).map(propName => {\n const prop = model.prototype[propName];\n return {\n name: propName,\n type: prop.type || 'text',\n relation_model: prop.relationModel || '',\n is_list: prop.isList || false\n };\n });\n\n callback(null, { \n model: {\n name: model_name,\n properties: props\n }\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting model: ${error.message}`\n });\n }\n },\n\n // BaseItem operations\n CreateItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { model_name, properties } = call.request;\n const ModelClass = getModel(model_name);\n \n if (!ModelClass) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Model ${model_name} not found`\n });\n }\n\n // Process properties to handle relations and lists\n const processedProps = {};\n for (const [key, value] of Object.entries(properties)) {\n // Handle relationship properties and lists based on model definition\n const prop = ModelClass.prototype[key];\n if (prop && prop.isList) {\n processedProps[key] = JSON.parse(value);\n } else if (prop && prop.relationModel) {\n // Assuming relation is stored as stringified ID\n processedProps[key] = value;\n } else {\n processedProps[key] = value;\n }\n }\n\n const item = await BaseItem.create(processedProps);\n\n // Cache the BaseItem\n if (!itemsCache[model_name]) {\n BaseItemsCache[model_name] = {};\n }\n \n BaseItemsCache[model_name][item.id] = BaseItem;\n\n // Return the created BaseItem\n callback(null, {\n id: BaseItem.id,\n model_name,\n properties: properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error creating BaseItem: ${error.message}`\n });\n }\n },\n\n GetItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Convert properties to simple strings for gRPC\n const properties = {};\n for (const [key, value] of Object.entries(item)) {\n if (key !== 'id' && key !== 'modelName') {\n if (Array.isArray(value)) {\n properties[key] = JSON.stringify(value);\n } else if (typeof value === 'object' && value !== null) {\n properties[key] = JSON.stringify(value);\n } else {\n properties[key] = String(value);\n }\n }\n }\n\n callback(null, {\n id,\n model_name,\n properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error getting BaseItem: ${error.message}`\n });\n }\n },\n\n UpdateItem: async (call: grpc.ServerUnaryCall<any, any>, callback: grpc.sendUnaryData<any>) => {\n try {\n const { id, model_name, properties } = call.request;\n \n // Try to get from cache\n let item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Update properties\n for (const [key, value] of Object.entries(properties)) {\n const prop = BaseItem.constructor.prototype[key];\n if (prop && prop.isList) {\n item[key] = JSON.parse(value);\n } else if (prop && prop.relationModel) {\n item[key] = value;\n } else {\n item[key] = value;\n }\n }\n\n // Save the updated BaseItem\n await BaseItem.save();\n\n // Return the updated BaseItem\n callback(null, {\n id,\n model_name,\n properties: properties\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error updating BaseItem: ${error.message}`\n });\n }\n },\n\n DeleteItem: async (call, callback) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const BaseItem = BaseItemsCache[model_name]?.[id];\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Delete the BaseItem\n await BaseItem.delete();\n \n // Remove from cache\n delete BaseItemsCache[model_name][id];\n\n callback(null, {\n success: true,\n message: `Item ${id} deleted successfully`\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error deleting BaseItem: ${error.message}`\n });\n }\n },\n\n PublishItem: async (call, callback) => {\n try {\n const { id, model_name } = call.request;\n \n // Try to get from cache\n const item = await BaseItem.find({\n seedLocalId: id,\n modelName: model_name\n });\n \n if (!item) {\n return callback({\n code: grpc.status.NOT_FOUND,\n message: `Item ${id} not found`\n });\n }\n\n // Publish the BaseItem\n await item.publish();\n\n callback(null, {\n success: true,\n message: `Item ${id} published successfully`\n });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error publishing BaseItem: ${error.message}`\n });\n }\n },\n\n QueryItems: async (call, callback) => {\n try {\n const { model_name, filters, limit, offset } = call.request;\n \n // Simple in-memory implementation - in production, you'd query the SDK\n // Get all BaseItems for the model\n const modelItems = BaseItemsCache[model_name] || {};\n let items = Object.values(modelItems);\n \n // Apply filters\n if (filters) {\n items = items.filter(item => {\n return Object.entries(filters).every(([key, value]) => {\n return item[key] === value;\n });\n });\n }\n \n // Apply pagination\n if (offset) {\n items = items.slice(offset);\n }\n \n if (limit) {\n items = items.slice(0, limit);\n }\n \n // Format response\n const responseItems = items.map(item => {\n const properties = {};\n for (const [key, value] of Object.entries(item)) {\n if (key !== 'id' && key !== 'modelName') {\n if (Array.isArray(value)) {\n properties[key] = JSON.stringify(value);\n } else if (typeof value === 'object' && value !== null) {\n properties[key] = JSON.stringify(value);\n } else {\n properties[key] = String(value);\n }\n }\n }\n \n return {\n id: item.seedLocalId,\n model_name,\n properties\n };\n });\n\n callback(null, { items: responseItems });\n } catch (error) {\n callback({\n code: grpc.status.INTERNAL,\n message: `Error querying BaseItems: ${error.message}`\n });\n }\n }\n};\n\n/**\n * Start the gRPC server\n */\nfunction startServer() {\n const grpcServer = new grpc.Server();\n \n grpcServer.addService(seedProto.SeedService.service, server);\n \n grpcServer.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), (err, port) => {\n if (err) {\n console.error('Failed to bind server:', err);\n return;\n }\n \n console.log(`Server running at http://0.0.0.0:${port}`);\n });\n\n // Handle graceful shutdown\n process.on('SIGINT', () => {\n console.log('Shutting down gRPC server');\n grpcServer.tryShutdown(() => {\n console.log('Server stopped');\n process.exit(0);\n });\n });\n}\n\n// Start the server\nstartServer();"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addModel.d.ts","sourceRoot":"","sources":["../../scripts/addModel.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../../scripts/bin.ts"],"names":[],"mappings":";AAMA,OAAO,0BAA0B,CAAA;AACjC,OAAO,4BAA4B,CAAA;AACnC,OAAO,4BAA4B,CAAA;AACnC,OAAO,8BAA8B,CAAA;AA8GrC,QAAA,MAAM,IAAI,SAAU,MAAM,EAAE,SAyL3B,CAAA;AAeD,OAAO,EAAE,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpcServer.cursor.d.ts","sourceRoot":"","sources":["../../scripts/rpcServer.cursor.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpcServer.d.ts","sourceRoot":"","sources":["../../scripts/rpcServer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../../scripts/vite.config.ts"],"names":[],"mappings":";AAGA,wBAaE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
|
|
2
|
-
|
|
2
|
+
import { InferSelectModel } from 'drizzle-orm'
|
|
3
3
|
export const appState = sqliteTable('appState', {
|
|
4
4
|
key: text('key').unique(),
|
|
5
5
|
value: text('value'),
|
|
@@ -7,4 +7,4 @@ export const appState = sqliteTable('appState', {
|
|
|
7
7
|
updatedAt: int('updated_at'),
|
|
8
8
|
})
|
|
9
9
|
|
|
10
|
-
export type appStateType = appState
|
|
10
|
+
export type appStateType = InferSelectModel<typeof appState>
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { sql }
|
|
1
|
+
import { int, sqliteTable, text, check, blob, } from 'drizzle-orm/sqlite-core'
|
|
2
|
+
import { InferSelectModel, sql } from 'drizzle-orm'
|
|
3
3
|
|
|
4
|
-
export const config = sqliteTable(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
export const config = sqliteTable(
|
|
5
|
+
'config',
|
|
6
|
+
{
|
|
7
|
+
id: int('id').primaryKey({ autoIncrement: true }),
|
|
8
|
+
key: text('key').notNull(),
|
|
9
|
+
text: text('text'),
|
|
10
|
+
json: text('json', {mode: 'json'}),
|
|
11
|
+
blob: blob('blob', {mode: 'buffer'}),
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
checks: [
|
|
15
|
+
check('hasValue', sql`key IS NOT NULL OR text IS NOT NULL OR json IS NOT NULL OR blob IS NOT NULL`),
|
|
16
|
+
],
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
export type configType = InferSelectModel<typeof config>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
|
|
2
|
+
import { InferSelectModel } from 'drizzle-orm'
|
|
2
3
|
|
|
3
4
|
export const metadata = sqliteTable('metadata', {
|
|
4
5
|
localId: text('local_id').unique(),
|
|
@@ -25,4 +26,4 @@ export const metadata = sqliteTable('metadata', {
|
|
|
25
26
|
updatedAt: int('updated_at'),
|
|
26
27
|
})
|
|
27
28
|
|
|
28
|
-
export type MetadataType = metadata
|
|
29
|
+
export type MetadataType = InferSelectModel<typeof metadata>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { int, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core'
|
|
2
2
|
import { relations } from 'drizzle-orm'
|
|
3
|
-
|
|
3
|
+
import { InferInsertModel, InferSelectModel } from 'drizzle-orm'
|
|
4
4
|
export const models = sqliteTable('models', {
|
|
5
5
|
id: int('id').primaryKey({ autoIncrement: true }),
|
|
6
6
|
name: text('name').notNull(),
|
|
@@ -42,5 +42,5 @@ export const propertiesRelations = relations(properties, ({ one }) => ({
|
|
|
42
42
|
refModel: one(models),
|
|
43
43
|
}))
|
|
44
44
|
|
|
45
|
-
export type NewPropertyRecord = typeof properties
|
|
46
|
-
export type PropertyType = typeof properties
|
|
45
|
+
export type NewPropertyRecord = InferInsertModel<typeof properties>
|
|
46
|
+
export type PropertyType = InferSelectModel<typeof properties>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { InferSelectModel } from 'drizzle-orm'
|
|
1
2
|
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
|
|
2
3
|
|
|
3
4
|
export const seeds = sqliteTable(
|
|
@@ -26,4 +27,4 @@ export const seeds = sqliteTable(
|
|
|
26
27
|
// },
|
|
27
28
|
)
|
|
28
29
|
|
|
29
|
-
export type SeedType = seeds
|
|
30
|
+
export type SeedType = InferSelectModel<typeof seeds>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { int, sqliteTable, text } from 'drizzle-orm/sqlite-core'
|
|
2
|
+
import { InferSelectModel } from 'drizzle-orm'
|
|
2
3
|
|
|
3
4
|
export const versions = sqliteTable('versions', {
|
|
4
5
|
localId: text('local_id').unique(),
|
|
@@ -13,4 +14,4 @@ export const versions = sqliteTable('versions', {
|
|
|
13
14
|
attestationRaw: text('attestation_raw'),
|
|
14
15
|
})
|
|
15
16
|
|
|
16
|
-
export type VersionsType = versions
|
|
17
|
+
export type VersionsType = InferSelectModel<typeof versions>
|
package/dist/seedSchema/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IItem, IItemProperty } from '@/interfaces';
|
|
2
2
|
import { itemMachineSingle } from '@/Item/service/itemMachineSingle';
|
|
3
|
-
import { VersionsType } from '@/seedSchema
|
|
3
|
+
import { VersionsType } from '@/seedSchema';
|
|
4
4
|
import { CreatePropertyInstanceProps, ItemData, ItemFindProps, ModelSchema, ModelValues, NewItemProps, PropertyData } from '@/types';
|
|
5
5
|
import { immerable } from 'immer';
|
|
6
6
|
import { BehaviorSubject } from 'rxjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseItem.d.ts","sourceRoot":"","sources":["../../../src/Item/BaseItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseItem.d.ts","sourceRoot":"","sources":["../../../src/Item/BaseItem.ts"],"names":[],"mappings":"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"}
|