Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | // hono
import { Bindings } from '../types';
// validator
import { type GetUserProfileResponseSchemaType } from 'validator';
// drizzle
import { createDbConnection } from './utils/db';
import { eq } from 'drizzle-orm';
import { user } from '../db/auth-schema';
import { HTTPException } from 'hono/http-exception';
export const getUserProfileUseCase = async (
env: Bindings,
loginUserId: string
): Promise<GetUserProfileResponseSchemaType> => {
// データベース接続
const db = createDbConnection(env);
//* ユーザ情報を取得 (user table) *//
const userData = await db
.select({ display_name: user.displayName })
.from(user)
.where(eq(user.id, loginUserId))
.limit(1);
// ユーザが存在しない場合は例外をスロー
if (userData.length === 0) {
throw new HTTPException(404, { message: 'User not found' });
}
// レスポンス
return {
display_name: userData[0].display_name === null ? '' : userData[0].display_name,
} satisfies GetUserProfileResponseSchemaType;
};
export const updateUserProfileUseCase = async (
env: Bindings,
loginUserId: string,
displayName: string | undefined
): Promise<void> => {
// データベース接続
const db = createDbConnection(env);
//* ユーザ情報を更新 (user table) *//
await db
.update(user)
.set({
displayName: typeof displayName === 'undefined' ? null : displayName,
})
.where(eq(user.id, loginUserId));
};
|