mirror of
https://github.com/kmc7468/arkvault.git
synced 2025-12-16 06:58:46 +00:00
/api/mek/register/initial Endpoint 추가
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { and, or, eq, lt } from "drizzle-orm";
|
||||
import { and, or, eq, lt, desc } from "drizzle-orm";
|
||||
import db from "./drizzle";
|
||||
import { mek, clientMek, userClient } from "./schema";
|
||||
|
||||
@@ -7,6 +7,30 @@ export interface ClientMek {
|
||||
encMek: string;
|
||||
}
|
||||
|
||||
export const registerInitialMek = async (userId: number, createdBy: number, encMek: string) => {
|
||||
await db.transaction(async (tx) => {
|
||||
await tx
|
||||
.insert(mek)
|
||||
.values({
|
||||
userId,
|
||||
version: 1,
|
||||
createdBy,
|
||||
createdAt: new Date(),
|
||||
state: "active",
|
||||
})
|
||||
.execute();
|
||||
await tx
|
||||
.insert(clientMek)
|
||||
.values({
|
||||
userId,
|
||||
clientId: createdBy,
|
||||
mekVersion: 1,
|
||||
encMek,
|
||||
})
|
||||
.execute();
|
||||
});
|
||||
};
|
||||
|
||||
export const registerActiveMek = async (
|
||||
userId: number,
|
||||
version: number,
|
||||
@@ -63,15 +87,29 @@ export const registerActiveMek = async (
|
||||
});
|
||||
};
|
||||
|
||||
export const getActiveMek = async (userId: number) => {
|
||||
export const getInitialMek = async (userId: number) => {
|
||||
const meks = await db
|
||||
.select()
|
||||
.from(mek)
|
||||
.where(and(eq(mek.userId, userId), eq(mek.state, "active")))
|
||||
.where(and(eq(mek.userId, userId), eq(mek.version, 1)))
|
||||
.execute();
|
||||
return meks[0] ?? null;
|
||||
};
|
||||
|
||||
export const getNextActiveMekVersion = async (userId: number) => {
|
||||
const meks = await db
|
||||
.select({ version: mek.version })
|
||||
.from(mek)
|
||||
.where(eq(mek.userId, userId))
|
||||
.orderBy(desc(mek.version))
|
||||
.limit(1)
|
||||
.execute();
|
||||
if (!meks[0]) {
|
||||
throw new Error("No MEK found");
|
||||
}
|
||||
return meks[0].version + 1;
|
||||
};
|
||||
|
||||
export const getAllValidClientMeks = async (userId: number, clientId: number) => {
|
||||
return await db
|
||||
.select()
|
||||
|
||||
Reference in New Issue
Block a user