initial refactor

This commit is contained in:
dswbx
2025-06-21 13:35:58 +02:00
parent b2086c4da7
commit 42edce904f
93 changed files with 1021 additions and 1216 deletions
+18 -27
View File
@@ -1,11 +1,5 @@
import { $console, config } from "core";
import {
type Static,
StringEnum,
parse,
snakeToPascalWithSpaces,
transformObject,
} from "core/utils";
import { snakeToPascalWithSpaces, transformObject } from "core/utils";
import {
type Field,
PrimaryField,
@@ -13,25 +7,21 @@ import {
type TActionContext,
type TRenderContext,
} from "../fields";
import * as tbbox from "@sinclair/typebox";
const { Type } = tbbox;
import { s, parse } from "core/object/schema";
// @todo: entity must be migrated to typebox
export const entityConfigSchema = Type.Object(
{
name: Type.Optional(Type.String()),
name_singular: Type.Optional(Type.String()),
description: Type.Optional(Type.String()),
sort_field: Type.Optional(Type.String({ default: config.data.default_primary_field })),
sort_dir: Type.Optional(StringEnum(["asc", "desc"], { default: "asc" })),
primary_format: Type.Optional(StringEnum(primaryFieldTypes)),
},
{
additionalProperties: false,
},
);
export const entityConfigSchema = s
.strictObject({
name: s.string(),
name_singular: s.string(),
description: s.string(),
sort_field: s.string({ default: config.data.default_primary_field }),
sort_dir: s.string({ enum: ["asc", "desc"], default: "asc" }),
primary_format: s.string({ enum: primaryFieldTypes }),
})
.partial();
export type EntityConfig = Static<typeof entityConfigSchema>;
export type EntityConfig = s.Static<typeof entityConfigSchema>;
export type EntityData = Record<string, any>;
export type EntityJSON = ReturnType<Entity["toJSON"]>;
@@ -287,8 +277,10 @@ export class Entity<
}
const _fields = Object.fromEntries(fields.map((field) => [field.name, field]));
const schema = Type.Object(
transformObject(_fields, (field) => {
const schema = {
type: "object",
additionalProperties: false,
properties: transformObject(_fields, (field) => {
const fillable = field.isFillable(options?.context);
return {
title: field.config.label,
@@ -298,8 +290,7 @@ export class Entity<
...field.toJsonSchema(),
};
}),
{ additionalProperties: false },
);
};
return options?.clean ? JSON.parse(JSON.stringify(schema)) : schema;
}
+3 -3
View File
@@ -78,8 +78,8 @@ export class Repository<TBD extends object = DefaultDB, TB extends keyof TBD = a
this.checkIndex(entity.name, options.sort.by, "sort");
validated.sort = {
dir: "asc",
...options.sort,
dir: options.sort.dir ?? "asc",
by: options.sort.by,
};
}
@@ -345,7 +345,7 @@ export class Repository<TBD extends object = DefaultDB, TB extends keyof TBD = a
...refQueryOptions,
where: {
...refQueryOptions.where,
..._options?.where,
...(_options?.where ?? {}),
},
};