mirror of
https://github.com/bknd-io/bknd/
synced 2026-08-02 16:16:02 +00:00
added systemEntity and added docs on how to work with system entities
This commit is contained in:
@@ -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 {}
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -157,6 +157,7 @@ export {
|
||||
medium,
|
||||
make,
|
||||
entity,
|
||||
systemEntity,
|
||||
relation,
|
||||
index,
|
||||
em,
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
Reference in New Issue
Block a user