link-stack/packages/bridge-ui/lib/actions.ts
2024-06-05 08:52:41 +02:00

84 lines
1.6 KiB
TypeScript

import { Database } from "@link-stack/bridge-common";
import {
createAction,
updateAction,
deleteAction,
selectAllAction,
selectOneAction,
} from "../actions/service";
import { FieldDescription, Entity } from "./service";
type GenerateCreateActionArgs = {
entity: Entity;
table: keyof Database;
fields: FieldDescription[];
};
export function generateCreateAction({
entity,
table,
fields,
}: GenerateCreateActionArgs) {
return async (currentState: any, formData: FormData) => {
return createAction({
entity,
table,
fields,
currentState,
formData,
});
};
}
type GenerateUpdateActionArgs = {
entity: Entity;
table: keyof Database;
fields: FieldDescription[];
};
export function generateUpdateAction({
entity,
table,
fields,
}: GenerateUpdateActionArgs) {
return async (currentState: any, formData: FormData) => {
return updateAction({
entity,
table,
fields,
currentState,
formData,
});
};
}
type GenerateDeleteActionArgs = {
entity: Entity;
table: keyof Database;
};
export function generateDeleteAction({
entity,
table,
}: GenerateDeleteActionArgs) {
return async (id: string) => {
return deleteAction({ entity, table, id });
};
}
export function generateSelectAllAction(table: keyof Database) {
return async () => {
return selectAllAction(table);
};
}
type GenerateSelectOneArgs = {
table: keyof Database;
id: string;
};
export function generateSelectOneAction({ table, id }: GenerateSelectOneArgs) {
return async () => {
return selectOneAction({ table, id });
};
}