토큰에 클라이언트 정보를 함께 저장하도록 변경

This commit is contained in:
static
2024-12-26 17:04:52 +09:00
parent fac8764572
commit 45e214d49f
5 changed files with 57 additions and 23 deletions

View File

@@ -0,0 +1,17 @@
import { and, eq } from "drizzle-orm";
import db from "./drizzle";
import { client, userClient } from "./schema";
export const getClientByPubKey = async (pubKey: string) => {
const clients = await db.select().from(client).where(eq(client.pubKey, pubKey)).execute();
return clients[0] ?? null;
};
export const getUserClient = async (userId: number, clientId: number) => {
const userClients = await db
.select()
.from(userClient)
.where(and(eq(userClient.userId, userId), eq(userClient.clientId, clientId)))
.execute();
return userClients[0] ?? null;
};

View File

@@ -1,29 +1,29 @@
import { sqliteTable, text, integer, primaryKey } from "drizzle-orm/sqlite-core";
import { user } from "./user";
export enum UserDeviceState {
export enum UserClientState {
PENDING = 0,
ACTIVE = 1,
}
export const device = sqliteTable("device", {
export const client = sqliteTable("client", {
id: integer("id").primaryKey(),
pubKey: text("pub_key").notNull().unique(),
pubKey: text("public_key").notNull().unique(),
});
export const userDevice = sqliteTable(
"user_device",
export const userClient = sqliteTable(
"user_client",
{
userId: integer("user_id")
.notNull()
.references(() => user.id),
deviceId: integer("device_id")
clientId: integer("client_id")
.notNull()
.references(() => device.id),
.references(() => client.id),
state: integer("state").notNull().default(0),
encKey: text("enc_key"),
encKey: text("encrypted_key"),
},
(t) => ({
pk: primaryKey({ columns: [t.userId, t.deviceId] }),
pk: primaryKey({ columns: [t.userId, t.clientId] }),
}),
);

View File

@@ -1,2 +1,2 @@
export * from "./device";
export * from "./client";
export * from "./user";