From 1fcc8d3ad729b2b7426cd825371f1de1a4d34dee Mon Sep 17 00:00:00 2001 From: Takumi Akimoto Date: Fri, 1 May 2026 16:02:51 +0900 Subject: [PATCH] Implement repository methods --- repository/post.ts | 20 ++++++++++++------ repository/systemState.ts | 27 ++++++++++++++++++------ repository/user.ts | 43 +++++++++++++++++++++++++-------------- 3 files changed, 63 insertions(+), 27 deletions(-) diff --git a/repository/post.ts b/repository/post.ts index 2b4365f..094632d 100644 --- a/repository/post.ts +++ b/repository/post.ts @@ -1,14 +1,22 @@ -export const getTraqMessageIdByAtProtoUri = ( +import { db } from "../database/db.ts" + +export const getTraqMessageIdByAtProtoUri = async ( atProtoUri: string, ): Promise => { - // TODO - return Promise.resolve(undefined) + const result = await db.selectFrom("posts") + .select("traqMessageId") + .where("atProtoUri", "=", atProtoUri) + .executeTakeFirst() + + return result?.traqMessageId } -export const savePostMetadata = (data: { +export const savePostMetadata = async (data: { atProtoUri: string traqMessageId: string }): Promise => { - // TODO - return Promise.resolve() + await db.insertInto("posts").values({ + atProtoUri: data.atProtoUri, + traqMessageId: data.traqMessageId, + }).execute() }) diff --git a/repository/systemState.ts b/repository/systemState.ts index c0ebe91..f94c440 100644 --- a/repository/systemState.ts +++ b/repository/systemState.ts @@ -1,9 +1,24 @@ -export const getJetstreamCursor = (): Promise => { - // TODO - return Promise.resolve(undefined) +import { db } from "../database/db.ts" + +const SYSTEM_STATE_KEY_JETSTREAM_CURSOR = "jetstream_cursor" + +export const getJetstreamCursor = async (): Promise => { + const result = await db.selectFrom("systemStates") + .select("value") + .where("key", "=", SYSTEM_STATE_KEY_JETSTREAM_CURSOR) + .executeTakeFirst() + + return result?.value } -export const saveJetstreamCursor = (cursor: number): Promise => { - // TODO - return Promise.resolve() +export const saveJetstreamCursor = async (cursor: number): Promise => { + await db.insertInto("systemStates") + .values({ + key: SYSTEM_STATE_KEY_JETSTREAM_CURSOR, + value: cursor, + }) + .onDuplicateKeyUpdate({ + value: cursor, + }) + .execute() } diff --git a/repository/user.ts b/repository/user.ts index e18fc9d..805ab46 100644 --- a/repository/user.ts +++ b/repository/user.ts @@ -1,22 +1,35 @@ -import { UserSettingsTable } from "../database/userSettings.ts" +import { db } from "../database/db.ts" -export const getAllDids = (): Promise => { - // TODO - return Promise.resolve([]) +export const getAllDids = async () => { + const result = await db.selectFrom("userSettings").select("did").execute() + + return result.map((row) => row.did) +} + +interface UserSetting { + userId: string + did: string + targetChannelId: string } -export const getUserSettingByDid = ( +export const getUserSettingByDid = async ( did: string, -): Promise => { - // TODO - return Promise.resolve({ - did, - targetChannelId: "", - userId: "", - }) +): Promise => { + const result = await db + .selectFrom("userSettings") + .selectAll() + .where("did", "=", did) + .executeTakeFirstOrThrow() + + return result } -export const getUserAccessToken = (userId: string) => { - // TODO - return Promise.resolve("") +export const getUserAccessToken = async (userId: string) => { + const result = await db + .selectFrom("userTokens") + .select("accessToken") + .where("userId", "=", userId) + .executeTakeFirstOrThrow() + + return result.accessToken } -- 2.51.2