fix use upsert in param.service.ts

This commit is contained in:
biersoeckli
2024-11-23 16:23:08 +00:00
parent 7b97eb1395
commit 6838e02cbc

View File

@@ -11,24 +11,32 @@ export class ParamService {
static readonly LETS_ENCRYPT_MAIL = 'letsEncryptMail'; static readonly LETS_ENCRYPT_MAIL = 'letsEncryptMail';
static readonly K3S_JOIN_TOKEN = Constants.K3S_JOIN_TOKEN; static readonly K3S_JOIN_TOKEN = Constants.K3S_JOIN_TOKEN;
async get(name: string) { async getUncached(name: string) {
return await unstable_cache(async (name: string) => await dataAccess.client.parameter.findFirstOrThrow({ return await dataAccess.client.parameter.findFirstOrThrow({
where: { where: {
name name
} }
}), });
}
async get(name: string) {
return await unstable_cache(async (name: string) => await this.getUncached(name),
[Tags.parameter()], { [Tags.parameter()], {
tags: [Tags.parameter()], tags: [Tags.parameter()],
revalidate: 3600 revalidate: 3600
})(name); })(name);
} }
async getOrUndefined(name: string) { async getOrUndefinedUncached(name: string) {
return await unstable_cache(async (name: string) => await dataAccess.client.parameter.findUnique({ return await dataAccess.client.parameter.findUnique({
where: { where: {
name name
} }
}), });
}
async getOrUndefined(name: string) {
return await unstable_cache(async (name: string) => await this.getOrUndefinedUncached(name),
[Tags.parameter()], { [Tags.parameter()], {
tags: [Tags.parameter()], tags: [Tags.parameter()],
revalidate: 3600 revalidate: 3600
@@ -108,21 +116,15 @@ export class ParamService {
async save(item: Prisma.ParameterUncheckedCreateInput | Prisma.ParameterUncheckedUpdateInput) { async save(item: Prisma.ParameterUncheckedCreateInput | Prisma.ParameterUncheckedUpdateInput) {
let savedItem: Parameter; let savedItem: Parameter;
try { try {
const existingParam = await this.getOrUndefined(item.name as string); savedItem = await dataAccess.client.parameter.upsert({
if (existingParam) { where: {
savedItem = await dataAccess.client.parameter.update({ name: item.name as string
where: { },
name: item.name as string create: item as Prisma.ParameterUncheckedCreateInput,
}, update: {
data: { value: item.value
value: item.value } as Prisma.ParameterUncheckedUpdateInput
} });
});
} else {
savedItem = await dataAccess.client.parameter.create({
data: item as Prisma.ParameterUncheckedCreateInput
});
}
} finally { } finally {
revalidateTag(Tags.parameter()); revalidateTag(Tags.parameter());
} }