init mcp data tests, added crud for $record

This commit is contained in:
dswbx
2025-08-12 12:55:14 +02:00
parent 1e8c373dd4
commit f40ea0ec5b
6 changed files with 117 additions and 21 deletions

View File

@@ -3,7 +3,7 @@ import { MediaField, mediaFieldConfigSchema } from "../media/MediaField";
import { FieldClassMap } from "data/fields";
import { RelationClassMap, RelationFieldClassMap } from "data/relations";
import { entityConfigSchema, entityTypes } from "data/entities";
import { primaryFieldTypes } from "./fields";
import { primaryFieldTypes, baseFieldConfigSchema } from "./fields";
import { s } from "bknd/utils";
import { $object, $record } from "modules/mcp";
@@ -12,6 +12,7 @@ export const FIELDS = {
...RelationFieldClassMap,
media: { schema: mediaFieldConfigSchema, field: MediaField },
};
export const FIELD_TYPES = Object.keys(FIELDS);
export type FieldType = keyof typeof FIELDS;
export const RELATIONS = RelationClassMap;
@@ -40,6 +41,19 @@ export const entitiesSchema = s.strictObject({
fields: entityFields.optional(),
});
export type TAppDataEntity = s.Static<typeof entitiesSchema>;
export const simpleEntitiesSchema = s.strictObject({
type: s.string({ enum: entityTypes, default: "regular" }).optional(),
config: entityConfigSchema.optional(),
fields: s
.record(
s.object({
type: s.anyOf([s.string({ enum: FIELD_TYPES }), s.string()]),
config: baseFieldConfigSchema.optional(),
}),
{ default: {} },
)
.optional(),
});
export const relationsSchema = Object.entries(RelationClassMap).map(([name, relationClass]) => {
return s.strictObject(
@@ -70,6 +84,6 @@ export const dataConfigSchema = $object("config_data", {
default: {},
}).optional(),
indices: $record("config_data_indices", indicesSchema, { default: {} }).optional(),
});
}).strict();
export type AppDataConfig = s.Static<typeof dataConfigSchema>;