All files / src/application userProfile.ts

0% Statements 0/9
0% Branches 0/6
0% Functions 0/2
0% Lines 0/9

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));
};