feat: adding initial uuid support

This commit is contained in:
dswbx
2025-06-06 20:46:01 +02:00
parent abbd372ddf
commit 9a18e354cd
22 changed files with 184 additions and 52 deletions

View File

@@ -233,6 +233,8 @@ export class DataController extends Controller {
const hono = this.create();
const entitiesEnum = this.getEntitiesEnum(this.em);
// @todo: make dynamic based on entity
const idType = s.anyOf([s.number(), s.string()], { coerce: (v) => v as any });
/**
* Function endpoints
@@ -333,7 +335,7 @@ export class DataController extends Controller {
"param",
s.object({
entity: entitiesEnum,
id: s.string(),
id: idType,
}),
),
jsc("query", repoQuery, { skipOpenAPI: true }),
@@ -342,8 +344,9 @@ export class DataController extends Controller {
if (!this.entityExists(entity)) {
return this.notFound(c);
}
console.log("id", id);
const options = c.req.valid("query") as RepoQuery;
const result = await this.em.repository(entity).findId(Number(id), options);
const result = await this.em.repository(entity).findId(id, options);
return c.json(this.repoResult(result), { status: result.data ? 200 : 404 });
},
@@ -362,7 +365,7 @@ export class DataController extends Controller {
"param",
s.object({
entity: entitiesEnum,
id: s.string(),
id: idType,
reference: s.string(),
}),
),
@@ -376,7 +379,7 @@ export class DataController extends Controller {
const options = c.req.valid("query") as RepoQuery;
const result = await this.em
.repository(entity)
.findManyByReference(Number(id), reference, options);
.findManyByReference(id, reference, options);
return c.json(this.repoResult(result), { status: result.data ? 200 : 404 });
},
@@ -485,7 +488,7 @@ export class DataController extends Controller {
tags: ["data"],
}),
permission(DataPermissions.entityUpdate),
jsc("param", s.object({ entity: entitiesEnum, id: s.number() })),
jsc("param", s.object({ entity: entitiesEnum, id: idType })),
jsc("json", s.object({})),
async (c) => {
const { entity, id } = c.req.valid("param");
@@ -493,7 +496,7 @@ export class DataController extends Controller {
return this.notFound(c);
}
const body = (await c.req.json()) as EntityData;
const result = await this.em.mutator(entity).updateOne(Number(id), body);
const result = await this.em.mutator(entity).updateOne(id, body);
return c.json(this.mutatorResult(result));
},
@@ -507,13 +510,13 @@ export class DataController extends Controller {
tags: ["data"],
}),
permission(DataPermissions.entityDelete),
jsc("param", s.object({ entity: entitiesEnum, id: s.number() })),
jsc("param", s.object({ entity: entitiesEnum, id: idType })),
async (c) => {
const { entity, id } = c.req.valid("param");
if (!this.entityExists(entity)) {
return this.notFound(c);
}
const result = await this.em.mutator(entity).deleteOne(Number(id));
const result = await this.em.mutator(entity).deleteOne(id);
return c.json(this.mutatorResult(result));
},