added systemEntity and added docs on how to work with system entities

This commit is contained in:
dswbx
2025-08-29 11:00:31 +02:00
parent 1559d30f25
commit 7dd486e2db
5 changed files with 103 additions and 0 deletions
+1
View File
@@ -14,6 +14,7 @@ import { usersFields } from "./auth-entities";
import { Authenticator } from "./authenticate/Authenticator";
import { Role } from "./authorize/Role";
export type UsersFields = typeof AppAuth.usersFields;
export type UserFieldSchema = FieldSchema<typeof AppAuth.usersFields>;
declare module "bknd" {
interface Users extends AppEntity, UserFieldSchema {}
+15
View File
@@ -39,6 +39,9 @@ import {
type PolymorphicRelationConfig,
} from "data/relations";
import type { MediaFields } from "media/AppMedia";
import type { UsersFields } from "auth/AppAuth";
type Options<Config = any> = {
entity: { name: string; fields: Record<string, Field<any, any, any>> };
field_name: string;
@@ -199,6 +202,18 @@ export function entity<
return new Entity(name, _fields, config, type);
}
type SystemEntities = {
users: UsersFields;
media: MediaFields;
};
export function systemEntity<
E extends keyof SystemEntities,
Fields extends Record<string, Field<any, any, any>>,
>(name: E, fields: Fields) {
return entity<E, SystemEntities[E] & Fields>(name, fields as any);
}
export function relation<Local extends Entity>(local: Local) {
return {
manyToOne: <Foreign extends Entity>(foreign: Foreign, config?: ManyToOneRelationConfig) => {
+1
View File
@@ -157,6 +157,7 @@ export {
medium,
make,
entity,
systemEntity,
relation,
index,
em,
+1
View File
@@ -9,6 +9,7 @@ import { buildMediaSchema, registry, type TAppMediaConfig } from "./media-schema
import { mediaFields } from "./media-entities";
import * as MediaPermissions from "media/media-permissions";
export type MediaFields = typeof AppMedia.mediaFields;
export type MediaFieldSchema = FieldSchema<typeof AppMedia.mediaFields>;
declare module "bknd" {
interface Media extends AppEntity, MediaFieldSchema {}