mirror of
https://github.com/shishantbiswas/bknd.git
synced 2026-03-16 12:37:20 +00:00
103 lines
2.7 KiB
TypeScript
103 lines
2.7 KiB
TypeScript
import type { PrimaryFieldType } from "core";
|
|
import { Event, InvalidEventReturn } from "core/events";
|
|
import type { Entity, EntityData } from "../entities";
|
|
import type { RepoQuery } from "../server/data-query-impl";
|
|
|
|
export class MutatorInsertBefore extends Event<{ entity: Entity; data: EntityData }, EntityData> {
|
|
static override slug = "mutator-insert-before";
|
|
|
|
override validate(data: EntityData) {
|
|
const { entity } = this.params;
|
|
if (!entity.isValidData(data, "create")) {
|
|
throw new InvalidEventReturn("EntityData", "invalid");
|
|
}
|
|
|
|
return this.clone({
|
|
entity,
|
|
data
|
|
});
|
|
}
|
|
}
|
|
export class MutatorInsertAfter extends Event<{ entity: Entity; data: EntityData }> {
|
|
static override slug = "mutator-insert-after";
|
|
}
|
|
export class MutatorUpdateBefore extends Event<
|
|
{
|
|
entity: Entity;
|
|
entityId: PrimaryFieldType;
|
|
data: EntityData;
|
|
},
|
|
EntityData
|
|
> {
|
|
static override slug = "mutator-update-before";
|
|
|
|
override validate(data: EntityData) {
|
|
const { entity, ...rest } = this.params;
|
|
if (!entity.isValidData(data, "update")) {
|
|
throw new InvalidEventReturn("EntityData", "invalid");
|
|
}
|
|
|
|
return this.clone({
|
|
...rest,
|
|
entity,
|
|
data
|
|
});
|
|
}
|
|
}
|
|
export class MutatorUpdateAfter extends Event<{
|
|
entity: Entity;
|
|
entityId: PrimaryFieldType;
|
|
data: EntityData;
|
|
}> {
|
|
static override slug = "mutator-update-after";
|
|
}
|
|
export class MutatorDeleteBefore extends Event<{ entity: Entity; entityId: PrimaryFieldType }> {
|
|
static override slug = "mutator-delete-before";
|
|
}
|
|
export class MutatorDeleteAfter extends Event<{
|
|
entity: Entity;
|
|
entityId: PrimaryFieldType;
|
|
data: EntityData;
|
|
}> {
|
|
static override slug = "mutator-delete-after";
|
|
}
|
|
|
|
export const MutatorEvents = {
|
|
MutatorInsertBefore,
|
|
MutatorInsertAfter,
|
|
MutatorUpdateBefore,
|
|
MutatorUpdateAfter,
|
|
MutatorDeleteBefore,
|
|
MutatorDeleteAfter
|
|
};
|
|
|
|
export class RepositoryFindOneBefore extends Event<{ entity: Entity; options: RepoQuery }> {
|
|
static override slug = "repository-find-one-before";
|
|
}
|
|
export class RepositoryFindOneAfter extends Event<{
|
|
entity: Entity;
|
|
options: RepoQuery;
|
|
data: EntityData;
|
|
}> {
|
|
static override slug = "repository-find-one-after";
|
|
}
|
|
|
|
export class RepositoryFindManyBefore extends Event<{ entity: Entity; options: RepoQuery }> {
|
|
static override slug = "repository-find-many-before";
|
|
static another = "one";
|
|
}
|
|
export class RepositoryFindManyAfter extends Event<{
|
|
entity: Entity;
|
|
options: RepoQuery;
|
|
data: EntityData;
|
|
}> {
|
|
static override slug = "repository-find-many-after";
|
|
}
|
|
|
|
export const RepositoryEvents = {
|
|
RepositoryFindOneBefore,
|
|
RepositoryFindOneAfter,
|
|
RepositoryFindManyBefore,
|
|
RepositoryFindManyAfter
|
|
};
|