From 91c81385cfb22d31a0d7803b5684b047a04bcfd4 Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 21:30:02 +0900 Subject: [PATCH 1/6] =?UTF-8?q?refactor(web):=20src=20entities=EB=A5=BC=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EB=8F=84=EB=A9=94=EC=9D=B8=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=EC=9C=BC=EB=A1=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/admin/api.ts | 4 ++-- apps/web/src/admin/constants.ts | 4 ++-- apps/web/src/entities/category.ts | 8 -------- apps/web/src/entities/club.ts | 34 ------------------------------- 4 files changed, 4 insertions(+), 46 deletions(-) delete mode 100644 apps/web/src/entities/category.ts delete mode 100644 apps/web/src/entities/club.ts diff --git a/apps/web/src/admin/api.ts b/apps/web/src/admin/api.ts index 3f5eeaea..66f0b6f3 100644 --- a/apps/web/src/admin/api.ts +++ b/apps/web/src/admin/api.ts @@ -1,6 +1,6 @@ +import type { CollegeMajor } from 'server/domain/model/CollegeMajor' import { ADMIN_AUTH_TOKEN_KEY, buildQuery } from 'src/admin/constants' import type { AffiliationFilter, ClubStatus, StatusFilter } from 'src/admin/types' -import type { ClubCollegeMajor } from 'src/entities/club' import type { AdminClubDetailResponse, AdminClubHistoriesResponse, @@ -15,7 +15,7 @@ type PaginationParams = { limit?: number } type CollegeMajorsResponse = { - majors: ClubCollegeMajor[] + majors: CollegeMajor[] totalSize: number } diff --git a/apps/web/src/admin/constants.ts b/apps/web/src/admin/constants.ts index bfcdc0be..0b9dde5e 100644 --- a/apps/web/src/admin/constants.ts +++ b/apps/web/src/admin/constants.ts @@ -1,5 +1,5 @@ +import type { CollegeMajor } from 'server/domain/model/CollegeMajor' import type { AdminTab, AffiliationFilter, ClubStatus, StatusFilter } from 'src/admin/types' -import type { ClubCollegeMajor } from 'src/entities/club' export const ADMIN_AUTH_TOKEN_KEY = 'allclear:admin-auth-token' export const ADMIN_PAGE_SIZE = 20 @@ -56,5 +56,5 @@ export const buildQuery = (params: Record) return queryString ? `?${queryString}` : '' } -export const formatCollegeMajorLabel = (collegeMajor: ClubCollegeMajor) => +export const formatCollegeMajorLabel = (collegeMajor: CollegeMajor) => collegeMajor.major ?? collegeMajor.college ?? '' diff --git a/apps/web/src/entities/category.ts b/apps/web/src/entities/category.ts deleted file mode 100644 index 069f949e..00000000 --- a/apps/web/src/entities/category.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type Category = { - name: string - description: string - themeColor: string - iconUri: string - thumbnailUri: string - blurHash: string -} diff --git a/apps/web/src/entities/club.ts b/apps/web/src/entities/club.ts deleted file mode 100644 index d8861d6e..00000000 --- a/apps/web/src/entities/club.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { ClubStatus } from 'src/common/constants/club-status' - -export type ClubCollegeMajor = { - id: number - college: string | null - major: string | null -} - -export type Club = { - id: string - uuid: string // id와 동일한 필드. 기존의 id는 number 타입이었으나, string 타입으로 변경되었다. - name: string - description: string - shortDescription: string - introduction: string - type: string - category: string - affiliationType: string - collegeMajorId: number | null - collegeMajor: ClubCollegeMajor | null - recruitType: string - isOfficialVerified: boolean - verifiedAt: string | null - hasDongbang: boolean - dongbangLocation: string - minActivityPeriod: number - activeMemberCount: number - snsUrls: string[] - imageUri: string - article: string - articleUploadedAt: string | null - status: ClubStatus - rejectReason: string -} From 208a353772c70ca011771d55861cbd9cb388e9bc Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 21:45:03 +0900 Subject: [PATCH 2/6] =?UTF-8?q?refactor(web):=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EC=83=81=EC=88=98=EC=99=80=20?= =?UTF-8?q?=EC=9A=B4=EC=98=81=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20?= =?UTF-8?q?=EC=A0=9C=EC=9E=90=EB=A6=AC=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/clubs/[uuid]/verifications/index.ts | 2 +- .../domain/constants/club-categories.ts} | 2 +- .../domain/constants}/club-options.ts | 2 +- .../domain}/constants/club-recruit-type.ts | 0 .../domain}/constants/club-recruitment.ts | 0 .../domain}/constants/club-status.ts | 0 .../constants/official-verification-status.ts | 0 .../official-verification-term.test.ts | 0 .../constants/official-verification-term.ts | 0 .../constants}/user-role.enum.ts | 0 apps/web/server/domain/model/Club.ts | 11 ++++++----- .../web/server/domain/model/ClubRecruitment.ts | 2 +- .../infra/database/entities/club.entity.ts | 2 +- .../server/infra/database/entities/index.ts | 1 - .../infra/database/entities/user.entity.ts | 2 +- apps/web/server/service/admin-club.service.ts | 4 ++-- apps/web/server/service/auth.service.ts | 2 +- apps/web/server/service/club-access.service.ts | 2 +- .../server/service/club-registration-status.ts | 2 +- .../service/club-verification.service.ts | 4 ++-- apps/web/server/service/club.service.ts | 18 +++++++++--------- .../service/search/search-query.service.ts | 2 +- .../search/search-typo-correction.service.ts | 2 +- apps/web/server/service/test-auth.service.ts | 2 +- apps/web/server/service/user.service.ts | 2 +- apps/web/src/admin/types.ts | 2 +- apps/web/src/fixtures/README.md | 3 --- apps/web/src/lib/schemas/admin.ts | 4 ++-- apps/web/src/lib/schemas/club-recruitments.ts | 2 +- apps/web/src/lib/schemas/common.ts | 6 +++--- apps/web/src/lib/schemas/managers.ts | 2 +- 31 files changed, 40 insertions(+), 43 deletions(-) rename apps/web/{src/fixtures/category.ts => server/domain/constants/club-categories.ts} (97%) rename apps/web/{src/fixtures => server/domain/constants}/club-options.ts (90%) rename apps/web/{src/common => server/domain}/constants/club-recruit-type.ts (100%) rename apps/web/{src/common => server/domain}/constants/club-recruitment.ts (100%) rename apps/web/{src/common => server/domain}/constants/club-status.ts (100%) rename apps/web/{src/common => server/domain}/constants/official-verification-status.ts (100%) rename apps/web/{src/common => server/domain}/constants/official-verification-term.test.ts (100%) rename apps/web/{src/common => server/domain}/constants/official-verification-term.ts (100%) rename apps/web/server/{infra/database/entities => domain/constants}/user-role.enum.ts (100%) delete mode 100644 apps/web/src/fixtures/README.md diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts index 4d7cb3bb..0b1ade7f 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts @@ -1,4 +1,5 @@ import type { NextApiRequest, NextApiResponse } from 'next' +import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'server/domain/constants/official-verification-status' import { ConflictError, ForbiddenError, @@ -8,7 +9,6 @@ import { import { Provider } from 'server/provider' import { ClubVerificationService } from 'server/service/club-verification.service' import { UserService } from 'server/service/user.service' -import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'src/common/constants/official-verification-status' import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import type { CreateVerificationRequestResponse } from 'src/lib/schemas/managers' import { type ZodIssue, z } from 'zod' diff --git a/apps/web/src/fixtures/category.ts b/apps/web/server/domain/constants/club-categories.ts similarity index 97% rename from apps/web/src/fixtures/category.ts rename to apps/web/server/domain/constants/club-categories.ts index a9cfc5b1..edbd8607 100644 --- a/apps/web/src/fixtures/category.ts +++ b/apps/web/server/domain/constants/club-categories.ts @@ -1,4 +1,4 @@ -import type { ClubCategory } from '../../server/domain/model/ClubCategory' +import type { ClubCategory } from '../model/ClubCategory' export const CATEGORIES: ClubCategory[] = [ { diff --git a/apps/web/src/fixtures/club-options.ts b/apps/web/server/domain/constants/club-options.ts similarity index 90% rename from apps/web/src/fixtures/club-options.ts rename to apps/web/server/domain/constants/club-options.ts index eb152ffa..b0e6d911 100644 --- a/apps/web/src/fixtures/club-options.ts +++ b/apps/web/server/domain/constants/club-options.ts @@ -1,4 +1,4 @@ -export { CLUB_RECRUIT_TYPES } from 'src/common/constants/club-recruit-type' +export { CLUB_RECRUIT_TYPES } from './club-recruit-type' export const CLUB_COLLEGES = [ '단과대무관', diff --git a/apps/web/src/common/constants/club-recruit-type.ts b/apps/web/server/domain/constants/club-recruit-type.ts similarity index 100% rename from apps/web/src/common/constants/club-recruit-type.ts rename to apps/web/server/domain/constants/club-recruit-type.ts diff --git a/apps/web/src/common/constants/club-recruitment.ts b/apps/web/server/domain/constants/club-recruitment.ts similarity index 100% rename from apps/web/src/common/constants/club-recruitment.ts rename to apps/web/server/domain/constants/club-recruitment.ts diff --git a/apps/web/src/common/constants/club-status.ts b/apps/web/server/domain/constants/club-status.ts similarity index 100% rename from apps/web/src/common/constants/club-status.ts rename to apps/web/server/domain/constants/club-status.ts diff --git a/apps/web/src/common/constants/official-verification-status.ts b/apps/web/server/domain/constants/official-verification-status.ts similarity index 100% rename from apps/web/src/common/constants/official-verification-status.ts rename to apps/web/server/domain/constants/official-verification-status.ts diff --git a/apps/web/src/common/constants/official-verification-term.test.ts b/apps/web/server/domain/constants/official-verification-term.test.ts similarity index 100% rename from apps/web/src/common/constants/official-verification-term.test.ts rename to apps/web/server/domain/constants/official-verification-term.test.ts diff --git a/apps/web/src/common/constants/official-verification-term.ts b/apps/web/server/domain/constants/official-verification-term.ts similarity index 100% rename from apps/web/src/common/constants/official-verification-term.ts rename to apps/web/server/domain/constants/official-verification-term.ts diff --git a/apps/web/server/infra/database/entities/user-role.enum.ts b/apps/web/server/domain/constants/user-role.enum.ts similarity index 100% rename from apps/web/server/infra/database/entities/user-role.enum.ts rename to apps/web/server/domain/constants/user-role.enum.ts diff --git a/apps/web/server/domain/model/Club.ts b/apps/web/server/domain/model/Club.ts index 199367f1..ab8e4c3a 100644 --- a/apps/web/server/domain/model/Club.ts +++ b/apps/web/server/domain/model/Club.ts @@ -1,8 +1,9 @@ -import type { ClubRecruitType } from 'src/common/constants/club-recruit-type' -import { normalizeClubRecruitType } from 'src/common/constants/club-recruit-type' -import type { ClubStatus } from 'src/common/constants/club-status' -import { PENDING_CLUB_STATUS } from 'src/common/constants/club-status' -import type { OfficialVerificationStatus } from 'src/common/constants/official-verification-status' +import { + type ClubRecruitType, + normalizeClubRecruitType, +} from 'server/domain/constants/club-recruit-type' +import { type ClubStatus, PENDING_CLUB_STATUS } from 'server/domain/constants/club-status' +import type { OfficialVerificationStatus } from 'server/domain/constants/official-verification-status' import { ENV } from '../../ENV' import type { ClubEntity } from '../../infra/database/entities' import type { CollegeMajor } from './CollegeMajor' diff --git a/apps/web/server/domain/model/ClubRecruitment.ts b/apps/web/server/domain/model/ClubRecruitment.ts index bcbc8bd8..a5d36618 100644 --- a/apps/web/server/domain/model/ClubRecruitment.ts +++ b/apps/web/server/domain/model/ClubRecruitment.ts @@ -1,7 +1,7 @@ import type { ClubRecruitmentActivityLocationType, RegularMeetingDay, -} from 'src/common/constants/club-recruitment' +} from 'server/domain/constants/club-recruitment' import type { ClubRecruitmentEntity } from '../../infra/database/entities/club-recruitment.entity' export type RegularMeeting = { diff --git a/apps/web/server/infra/database/entities/club.entity.ts b/apps/web/server/infra/database/entities/club.entity.ts index 33fb6689..7a57a78f 100644 --- a/apps/web/server/infra/database/entities/club.entity.ts +++ b/apps/web/server/infra/database/entities/club.entity.ts @@ -1,4 +1,4 @@ -import type { ClubStatus } from 'src/common/constants/club-status' +import type { ClubStatus } from 'server/domain/constants/club-status' import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { CollegeMajorEntity } from './college-major.entity' import { ClubTimeStampMixin } from './TimeStampMixin' diff --git a/apps/web/server/infra/database/entities/index.ts b/apps/web/server/infra/database/entities/index.ts index d36f3d88..3836a078 100644 --- a/apps/web/server/infra/database/entities/index.ts +++ b/apps/web/server/infra/database/entities/index.ts @@ -21,5 +21,4 @@ export * from './user-club-review.entity' export * from './user-club-review-category.entity' export * from './user-notification.entity' export * from './user-recent-search.entity' -export * from './user-role.enum' export * from './user-voice.entity' diff --git a/apps/web/server/infra/database/entities/user.entity.ts b/apps/web/server/infra/database/entities/user.entity.ts index 9f69cebb..dd707d89 100644 --- a/apps/web/server/infra/database/entities/user.entity.ts +++ b/apps/web/server/infra/database/entities/user.entity.ts @@ -1,7 +1,7 @@ +import { UserRole } from 'server/domain/constants/user-role.enum' import { Column, Entity, OneToOne, PrimaryGeneratedColumn } from 'typeorm' import { ServiceUserEntity } from './service-user.entity' import { TimeStampMixin } from './TimeStampMixin' -import { UserRole } from './user-role.enum' @Entity('user') export class UserEntity extends TimeStampMixin { diff --git a/apps/web/server/service/admin-club.service.ts b/apps/web/server/service/admin-club.service.ts index dccb3421..3f09d5bb 100644 --- a/apps/web/server/service/admin-club.service.ts +++ b/apps/web/server/service/admin-club.service.ts @@ -1,10 +1,10 @@ -import { ConflictError, NotFoundError } from 'server/domain/error' import { type ClubStatus, PENDING_CLUB_STATUS, PUBLIC_CLUB_STATUS, REJECTED_CLUB_STATUS, -} from 'src/common/constants/club-status' +} from 'server/domain/constants/club-status' +import { ConflictError, NotFoundError } from 'server/domain/error' import type { AdminClubHistoriesQuery, AdminClubManagerRequestStatusUpdate, diff --git a/apps/web/server/service/auth.service.ts b/apps/web/server/service/auth.service.ts index 9181747e..fd14d1ac 100644 --- a/apps/web/server/service/auth.service.ts +++ b/apps/web/server/service/auth.service.ts @@ -1,5 +1,6 @@ import axios from 'axios' import * as qs from 'qs' +import { UserRole } from 'server/domain/constants/user-role.enum' import type { Repository } from 'typeorm' import { UserNotFoundError } from '../domain/error' import type { User } from '../domain/model/User' @@ -11,7 +12,6 @@ import { ServiceUserEntity, UserEntity, } from '../infra/database/entities' -import { UserRole } from '../infra/database/entities/user-role.enum' import { InjectRepository, Service } from '../provider' import { getSafeErrorName } from '../util/safe-error' diff --git a/apps/web/server/service/club-access.service.ts b/apps/web/server/service/club-access.service.ts index a1b193d4..0918b932 100644 --- a/apps/web/server/service/club-access.service.ts +++ b/apps/web/server/service/club-access.service.ts @@ -1,4 +1,4 @@ -import { PUBLIC_CLUB_STATUS } from 'src/common/constants/club-status' +import { PUBLIC_CLUB_STATUS } from 'server/domain/constants/club-status' import { IsNull, type Repository } from 'typeorm' import { ForbiddenError, NotFoundError } from '../domain/error' import { ClubEntity } from '../infra/database/entities' diff --git a/apps/web/server/service/club-registration-status.ts b/apps/web/server/service/club-registration-status.ts index b74ec94e..25c75030 100644 --- a/apps/web/server/service/club-registration-status.ts +++ b/apps/web/server/service/club-registration-status.ts @@ -1,4 +1,4 @@ -import type { ClubStatus } from 'src/common/constants/club-status' +import type { ClubStatus } from 'server/domain/constants/club-status' type ClubResubmissionStatusPatch = { status?: ClubStatus diff --git a/apps/web/server/service/club-verification.service.ts b/apps/web/server/service/club-verification.service.ts index f7c37530..10276017 100644 --- a/apps/web/server/service/club-verification.service.ts +++ b/apps/web/server/service/club-verification.service.ts @@ -1,5 +1,5 @@ -import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'src/common/constants/official-verification-status' -import { getOfficialVerificationTermKey } from 'src/common/constants/official-verification-term' +import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'server/domain/constants/official-verification-status' +import { getOfficialVerificationTermKey } from 'server/domain/constants/official-verification-term' import type { Repository } from 'typeorm' import { ConflictError, ForbiddenError, NotFoundError } from '../domain/error' import { ClubEntity } from '../infra/database/entities' diff --git a/apps/web/server/service/club.service.ts b/apps/web/server/service/club.service.ts index 253ca2a5..5ff55cbf 100644 --- a/apps/web/server/service/club.service.ts +++ b/apps/web/server/service/club.service.ts @@ -1,4 +1,13 @@ import { groupBy, toPairs } from 'lodash-es' +import { CATEGORIES } from 'server/domain/constants/club-categories' +import { normalizeClubRecruitType } from 'server/domain/constants/club-recruit-type' +import { + PENDING_CLUB_STATUS, + PUBLIC_CLUB_STATUS, + REJECTED_CLUB_STATUS, +} from 'server/domain/constants/club-status' +import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'server/domain/constants/official-verification-status' +import { getOfficialVerificationTermKey } from 'server/domain/constants/official-verification-term' import { type Club, type ClubDetail, @@ -8,14 +17,6 @@ import { toClubDetailDomain, toClubDomain, } from 'server/domain/model/Club' -import { normalizeClubRecruitType } from 'src/common/constants/club-recruit-type' -import { - PENDING_CLUB_STATUS, - PUBLIC_CLUB_STATUS, - REJECTED_CLUB_STATUS, -} from 'src/common/constants/club-status' -import { MAX_OFFICIAL_VERIFICATION_RETRY_COUNT } from 'src/common/constants/official-verification-status' -import { getOfficialVerificationTermKey } from 'src/common/constants/official-verification-term' import type { ClubData, ClubManagerRequest, @@ -26,7 +27,6 @@ import type { ManagedClubPatch, } from 'src/lib/schemas/managers' import { In, IsNull, type Repository } from 'typeorm' -import { CATEGORIES } from '../../src/fixtures/category' import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from '../domain/error' import type { ClubCategory } from '../domain/model/ClubCategory' import { diff --git a/apps/web/server/service/search/search-query.service.ts b/apps/web/server/service/search/search-query.service.ts index 56537d2c..18f24895 100644 --- a/apps/web/server/service/search/search-query.service.ts +++ b/apps/web/server/service/search/search-query.service.ts @@ -1,7 +1,7 @@ +import { PUBLIC_CLUB_STATUS } from 'server/domain/constants/club-status' import { ClubEntity } from 'server/infra/database/entities' import { CollegeMajorEntity } from 'server/infra/database/entities/college-major.entity' import { InjectRepository, Service } from 'server/provider' -import { PUBLIC_CLUB_STATUS } from 'src/common/constants/club-status' import { type FindOptionsWhere, ILike, diff --git a/apps/web/server/service/search/search-typo-correction.service.ts b/apps/web/server/service/search/search-typo-correction.service.ts index dcbf0590..3bacbbe1 100644 --- a/apps/web/server/service/search/search-typo-correction.service.ts +++ b/apps/web/server/service/search/search-typo-correction.service.ts @@ -1,8 +1,8 @@ import { disassemble } from 'es-hangul' import leven from 'leven' +import { PUBLIC_CLUB_STATUS } from 'server/domain/constants/club-status' import { ClubEntity } from 'server/infra/database/entities' import { InjectRepository, Service } from 'server/provider' -import { PUBLIC_CLUB_STATUS } from 'src/common/constants/club-status' import { IsNull, type Repository } from 'typeorm' type ClubCorrectionSource = Pick diff --git a/apps/web/server/service/test-auth.service.ts b/apps/web/server/service/test-auth.service.ts index 38366192..0fd9e352 100644 --- a/apps/web/server/service/test-auth.service.ts +++ b/apps/web/server/service/test-auth.service.ts @@ -1,4 +1,5 @@ import jwt from 'jsonwebtoken' +import { UserRole } from 'server/domain/constants/user-role.enum' import { ENV } from 'server/ENV' import { AccountEntity, @@ -7,7 +8,6 @@ import { ServiceUserEntity, UserEntity, } from 'server/infra/database/entities' -import { UserRole } from 'server/infra/database/entities/user-role.enum' import { InjectRepository, Service } from 'server/provider' import type { Repository } from 'typeorm' diff --git a/apps/web/server/service/user.service.ts b/apps/web/server/service/user.service.ts index e03825b8..9b8a122d 100644 --- a/apps/web/server/service/user.service.ts +++ b/apps/web/server/service/user.service.ts @@ -1,3 +1,4 @@ +import { UserRole } from 'server/domain/constants/user-role.enum' import { IsNull, Not, type Repository } from 'typeorm' import type { UpdateProfileDto } from '../../src/lib/schemas/users' import { ForbiddenError, UserNotFoundError } from '../domain/error' @@ -14,7 +15,6 @@ import { UserVoiceEntity, } from '../infra/database/entities' import { CollegeMajorEntity } from '../infra/database/entities/college-major.entity' -import { UserRole } from '../infra/database/entities/user-role.enum' import { InjectRepository, Service } from '../provider' const RECENT_SEARCH_LIMIT = 8 diff --git a/apps/web/src/admin/types.ts b/apps/web/src/admin/types.ts index c9082fdc..07782a45 100644 --- a/apps/web/src/admin/types.ts +++ b/apps/web/src/admin/types.ts @@ -1,4 +1,4 @@ -import type { ClubDecisionStatus, ClubStatus } from 'src/common/constants/club-status' +import type { ClubDecisionStatus, ClubStatus } from 'server/domain/constants/club-status' import type { AdminClubDetailResponse, AdminClubHistoriesResponse, diff --git a/apps/web/src/fixtures/README.md b/apps/web/src/fixtures/README.md deleted file mode 100644 index b7f72e77..00000000 --- a/apps/web/src/fixtures/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Fixtures - -추후 DB가 연동되기 전까지 Local Server에 Constant의 형태로 CLUB / CATEGORY를 넣어둔다 \ No newline at end of file diff --git a/apps/web/src/lib/schemas/admin.ts b/apps/web/src/lib/schemas/admin.ts index 4dd02eaf..9f6e949b 100644 --- a/apps/web/src/lib/schemas/admin.ts +++ b/apps/web/src/lib/schemas/admin.ts @@ -1,5 +1,5 @@ -import { UserRole } from 'server/infra/database/entities/user-role.enum' -import { CLUB_STATUSES, REJECTED_CLUB_STATUS } from 'src/common/constants/club-status' +import { CLUB_STATUSES, REJECTED_CLUB_STATUS } from 'server/domain/constants/club-status' +import { UserRole } from 'server/domain/constants/user-role.enum' import { z } from 'src/lib/schemas/zod' const AdminClubManagerSchema = z.object({ diff --git a/apps/web/src/lib/schemas/club-recruitments.ts b/apps/web/src/lib/schemas/club-recruitments.ts index a1938503..bb2403a7 100644 --- a/apps/web/src/lib/schemas/club-recruitments.ts +++ b/apps/web/src/lib/schemas/club-recruitments.ts @@ -1,7 +1,7 @@ import { CLUB_RECRUITMENT_ACTIVITY_LOCATION_TYPES, REGULAR_MEETING_DAYS, -} from 'src/common/constants/club-recruitment' +} from 'server/domain/constants/club-recruitment' import { z } from 'src/lib/schemas/zod' const TimestampStringSchema = z diff --git a/apps/web/src/lib/schemas/common.ts b/apps/web/src/lib/schemas/common.ts index 2cdeecbf..bc3b34b1 100644 --- a/apps/web/src/lib/schemas/common.ts +++ b/apps/web/src/lib/schemas/common.ts @@ -1,6 +1,6 @@ -import { CLUB_RECRUIT_TYPES } from 'src/common/constants/club-recruit-type' -import { CLUB_STATUSES } from 'src/common/constants/club-status' -import { OFFICIAL_VERIFICATION_STATUSES } from 'src/common/constants/official-verification-status' +import { CLUB_RECRUIT_TYPES } from 'server/domain/constants/club-recruit-type' +import { CLUB_STATUSES } from 'server/domain/constants/club-status' +import { OFFICIAL_VERIFICATION_STATUSES } from 'server/domain/constants/official-verification-status' import { z } from 'src/lib/schemas/zod' export const ValidationIssueSchema = z diff --git a/apps/web/src/lib/schemas/managers.ts b/apps/web/src/lib/schemas/managers.ts index 103989cd..c5bbb011 100644 --- a/apps/web/src/lib/schemas/managers.ts +++ b/apps/web/src/lib/schemas/managers.ts @@ -2,7 +2,7 @@ import { CLUB_AFFILIATION_TYPES, CLUB_CATEGORIES, CLUB_RECRUIT_TYPES, -} from 'src/fixtures/club-options' +} from 'server/domain/constants/club-options' import { ClubSchema } from 'src/lib/schemas/common' import { z } from 'src/lib/schemas/zod' From f887cf99d92d401e43535fa22fbf3876fe28ba7c Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 23:25:35 +0900 Subject: [PATCH 3/6] =?UTF-8?q?refactor(web):=20HTTP=20=EA=B3=84=EC=95=BD?= =?UTF-8?q?=EC=9D=84=20=EC=84=9C=EB=B2=84=20=EA=B2=BD=EA=B3=84=EB=A1=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/pages/api/swagger-json.ts | 4 +-- apps/web/pages/api/test/auth/login/index.ts | 2 +- .../api/test/redis/recent-searches/index.ts | 2 +- .../pages/api/v2/admin/clubs/[uuid]/index.ts | 4 +-- .../pages/api/v2/admin/clubs/[uuid]/status.ts | 10 +++---- .../web/pages/api/v2/admin/clubs/histories.ts | 8 +++--- apps/web/pages/api/v2/admin/clubs/index.ts | 2 +- .../clubs/manager-requests/[id]/status.ts | 8 +++--- .../v2/admin/clubs/manager-requests/index.ts | 8 +++--- .../admin/clubs/verifications/[id]/status.ts | 8 +++--- .../api/v2/admin/clubs/verifications/index.ts | 8 +++--- .../pages/api/v2/admin/users/[userId]/role.ts | 6 ++-- .../web/pages/api/v2/announcements/dismiss.ts | 2 +- .../api/v2/app/version-policies/index.ts | 6 ++-- apps/web/pages/api/v2/app/version/check.ts | 5 +++- .../pages/api/v2/auth/apple/callback/index.ts | 2 +- .../pages/api/v2/auth/kakao/callback/index.ts | 2 +- .../v2/auth/kakao/native/callback/index.ts | 2 +- apps/web/pages/api/v2/clubs/[uuid]/index.ts | 2 +- .../v2/clubs/[uuid]/manager-requests/index.ts | 10 +++---- .../api/v2/clubs/[uuid]/recruitments/index.ts | 6 ++-- .../recruitments/representative/index.ts | 6 ++-- .../api/v2/clubs/[uuid]/reviews/index.ts | 2 +- .../api/v2/clubs/[uuid]/reviews/me/index.ts | 2 +- .../pages/api/v2/clubs/[uuid]/saved/index.ts | 2 +- apps/web/pages/api/v2/clubs/rankings/index.ts | 2 +- apps/web/pages/api/v2/clubs/register/index.ts | 2 +- .../[token]/acceptance.ts | 8 +++--- .../[token]/index.ts | 8 +++--- .../[serviceUserId]/clubs/[uuid]/index.ts | 2 +- .../me/clubs/[uuid]/activity-images/index.ts | 2 +- .../managers/me/clubs/[uuid]/images/index.ts | 2 +- .../api/v2/managers/me/clubs/[uuid]/index.ts | 4 +-- .../manager-transfer-invitations/index.ts | 4 +-- .../managers/me/clubs/[uuid]/manager/index.ts | 4 +-- .../clubs/[uuid]/recruitments/images/index.ts | 2 +- .../me/clubs/[uuid]/recruitments/index.ts | 8 +++--- .../me/clubs/[uuid]/verifications/index.ts | 4 +-- .../me/recruitments/[recruitmentId]/index.ts | 8 +++--- .../v2/recruitments/[recruitmentId]/index.ts | 6 ++-- apps/web/pages/api/v2/terms/agree.ts | 2 +- apps/web/pages/api/v2/users/me/index.ts | 2 +- .../v2/users/me/notifications/[id]/read.ts | 2 +- .../web/pages/api/v2/users/me/voices/index.ts | 2 +- .../http}/openapi/register-paths.ts | 28 +++++++++---------- .../lib => server/http}/openapi/swagger.ts | 0 .../lib => server/http}/schemas/admin.test.ts | 0 .../{src/lib => server/http}/schemas/admin.ts | 2 +- .../http}/schemas/announcements.ts | 2 +- .../http}/schemas/app-versions.ts | 2 +- .../{src/lib => server/http}/schemas/auth.ts | 2 +- .../http}/schemas/club-recruitments.ts | 2 +- .../{src/lib => server/http}/schemas/clubs.ts | 8 ++++-- .../lib => server/http}/schemas/common.ts | 2 +- .../http}/schemas/manager-transfer.test.ts | 0 .../http}/schemas/manager-transfer.ts | 2 +- .../http}/schemas/managers.test.ts | 0 .../lib => server/http}/schemas/managers.ts | 4 +-- .../{src/lib => server/http}/schemas/terms.ts | 2 +- .../{src/lib => server/http}/schemas/test.ts | 2 +- .../lib => server/http}/schemas/users.test.ts | 0 .../{src/lib => server/http}/schemas/users.ts | 4 +-- .../{src/lib => server/http}/schemas/zod.ts | 0 apps/web/server/service/admin-club.service.ts | 2 +- .../service/club-recruitment.service.ts | 4 +-- apps/web/server/service/club.service.ts | 2 +- apps/web/server/service/review.service.ts | 4 +-- apps/web/server/service/user.service.ts | 2 +- apps/web/src/admin/api.ts | 6 ++-- apps/web/src/admin/types.ts | 2 +- 70 files changed, 142 insertions(+), 135 deletions(-) rename apps/web/{src/lib => server/http}/openapi/register-paths.ts (99%) rename apps/web/{src/lib => server/http}/openapi/swagger.ts (100%) rename apps/web/{src/lib => server/http}/schemas/admin.test.ts (100%) rename apps/web/{src/lib => server/http}/schemas/admin.ts (99%) rename apps/web/{src/lib => server/http}/schemas/announcements.ts (88%) rename apps/web/{src/lib => server/http}/schemas/app-versions.ts (97%) rename apps/web/{src/lib => server/http}/schemas/auth.ts (91%) rename apps/web/{src/lib => server/http}/schemas/club-recruitments.ts (99%) rename apps/web/{src/lib => server/http}/schemas/clubs.ts (94%) rename apps/web/{src/lib => server/http}/schemas/common.ts (98%) rename apps/web/{src/lib => server/http}/schemas/manager-transfer.test.ts (100%) rename apps/web/{src/lib => server/http}/schemas/manager-transfer.ts (96%) rename apps/web/{src/lib => server/http}/schemas/managers.test.ts (100%) rename apps/web/{src/lib => server/http}/schemas/managers.ts (98%) rename apps/web/{src/lib => server/http}/schemas/terms.ts (86%) rename apps/web/{src/lib => server/http}/schemas/test.ts (96%) rename apps/web/{src/lib => server/http}/schemas/users.test.ts (100%) rename apps/web/{src/lib => server/http}/schemas/users.ts (95%) rename apps/web/{src/lib => server/http}/schemas/zod.ts (100%) diff --git a/apps/web/pages/api/swagger-json.ts b/apps/web/pages/api/swagger-json.ts index 1a057fab..5f704356 100644 --- a/apps/web/pages/api/swagger-json.ts +++ b/apps/web/pages/api/swagger-json.ts @@ -1,6 +1,6 @@ import type { NextApiRequest, NextApiResponse } from 'next' -import 'src/lib/openapi/register-paths' -import { generateOpenApiDocument } from 'src/lib/openapi/swagger' +import 'server/http/openapi/register-paths' +import { generateOpenApiDocument } from 'server/http/openapi/swagger' export default function handler(_req: NextApiRequest, res: NextApiResponse) { res.status(200).json(generateOpenApiDocument()) diff --git a/apps/web/pages/api/test/auth/login/index.ts b/apps/web/pages/api/test/auth/login/index.ts index 39470285..173a5cfd 100644 --- a/apps/web/pages/api/test/auth/login/index.ts +++ b/apps/web/pages/api/test/auth/login/index.ts @@ -1,8 +1,8 @@ import type { NextApiRequest, NextApiResponse } from 'next' +import { TestLoginSchema } from 'server/http/schemas/test' import { Provider } from 'server/provider' import { TestAuthService, type TestLoginResult } from 'server/service/test-auth.service' import { isTestApiEnabled } from 'server/util/test-api' -import { TestLoginSchema } from 'src/lib/schemas/test' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/test/redis/recent-searches/index.ts b/apps/web/pages/api/test/redis/recent-searches/index.ts index a63c9b9e..8d0ae40a 100644 --- a/apps/web/pages/api/test/redis/recent-searches/index.ts +++ b/apps/web/pages/api/test/redis/recent-searches/index.ts @@ -1,10 +1,10 @@ import type { NextApiRequest, NextApiResponse } from 'next' +import { TestGuestRecentSearchDebugQuerySchema } from 'server/http/schemas/test' import { findGuestRecentSearchDebug, type GuestRecentSearchDebug, } from 'server/service/recent-search.service' import { isTestApiEnabled } from 'server/util/test-api' -import { TestGuestRecentSearchDebugQuerySchema } from 'src/lib/schemas/test' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/[uuid]/index.ts b/apps/web/pages/api/v2/admin/clubs/[uuid]/index.ts index 96790f4b..a534bed9 100644 --- a/apps/web/pages/api/v2/admin/clubs/[uuid]/index.ts +++ b/apps/web/pages/api/v2/admin/clubs/[uuid]/index.ts @@ -1,10 +1,10 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError, NotFoundError } from 'server/domain/error' +import type { AdminClubDetailResponse } from 'server/http/schemas/admin' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { AdminClubService } from 'server/service/admin-club.service' import { UserService } from 'server/service/user.service' -import type { AdminClubDetailResponse } from 'src/lib/schemas/admin' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/[uuid]/status.ts b/apps/web/pages/api/v2/admin/clubs/[uuid]/status.ts index 866beeaf..54aaafd9 100644 --- a/apps/web/pages/api/v2/admin/clubs/[uuid]/status.ts +++ b/apps/web/pages/api/v2/admin/clubs/[uuid]/status.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { BadRequestError, ForbiddenError, NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { type AdminClubStatusUpdateResponse, AdminClubStatusUpdateSchema, -} from 'src/lib/schemas/admin' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' +} from 'server/http/schemas/admin' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/histories.ts b/apps/web/pages/api/v2/admin/clubs/histories.ts index 0f05bb67..debbd78d 100644 --- a/apps/web/pages/api/v2/admin/clubs/histories.ts +++ b/apps/web/pages/api/v2/admin/clubs/histories.ts @@ -1,12 +1,12 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { AdminClubHistoriesQuerySchema, type AdminClubHistoriesResponse, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/index.ts b/apps/web/pages/api/v2/admin/clubs/index.ts index 5afc1b75..1deefdc5 100644 --- a/apps/web/pages/api/v2/admin/clubs/index.ts +++ b/apps/web/pages/api/v2/admin/clubs/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError } from 'server/domain/error' +import { AdminClubsQuerySchema, type AdminClubsResponse } from 'server/http/schemas/admin' import { Provider } from 'server/provider' import { AdminClubService } from 'server/service/admin-club.service' import { UserService } from 'server/service/user.service' -import { AdminClubsQuerySchema, type AdminClubsResponse } from 'src/lib/schemas/admin' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/manager-requests/[id]/status.ts b/apps/web/pages/api/v2/admin/clubs/manager-requests/[id]/status.ts index 0c5b4418..32c60531 100644 --- a/apps/web/pages/api/v2/admin/clubs/manager-requests/[id]/status.ts +++ b/apps/web/pages/api/v2/admin/clubs/manager-requests/[id]/status.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ConflictError, ForbiddenError, NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { AdminClubManagerRequestStatusParamsSchema, type AdminClubManagerRequestStatusUpdateResponse, AdminClubManagerRequestStatusUpdateSchema, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/manager-requests/index.ts b/apps/web/pages/api/v2/admin/clubs/manager-requests/index.ts index 3b66df33..578e3107 100644 --- a/apps/web/pages/api/v2/admin/clubs/manager-requests/index.ts +++ b/apps/web/pages/api/v2/admin/clubs/manager-requests/index.ts @@ -1,12 +1,12 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { AdminClubManagerRequestsQuerySchema, type AdminClubManagerRequestsResponse, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/verifications/[id]/status.ts b/apps/web/pages/api/v2/admin/clubs/verifications/[id]/status.ts index 39ec058a..fff1b89c 100644 --- a/apps/web/pages/api/v2/admin/clubs/verifications/[id]/status.ts +++ b/apps/web/pages/api/v2/admin/clubs/verifications/[id]/status.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ConflictError, ForbiddenError, NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { AdminClubVerificationRequestStatusParamsSchema, type AdminClubVerificationRequestStatusUpdateResponse, AdminClubVerificationRequestStatusUpdateSchema, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/clubs/verifications/index.ts b/apps/web/pages/api/v2/admin/clubs/verifications/index.ts index 31b33eff..d42fdd6c 100644 --- a/apps/web/pages/api/v2/admin/clubs/verifications/index.ts +++ b/apps/web/pages/api/v2/admin/clubs/verifications/index.ts @@ -1,12 +1,12 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { AdminClubService } from 'server/service/admin-club.service' -import { UserService } from 'server/service/user.service' import { AdminClubVerificationRequestsQuerySchema, type AdminClubVerificationRequestsResponse, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { AdminClubService } from 'server/service/admin-club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/admin/users/[userId]/role.ts b/apps/web/pages/api/v2/admin/users/[userId]/role.ts index b1efaed4..a72fad97 100644 --- a/apps/web/pages/api/v2/admin/users/[userId]/role.ts +++ b/apps/web/pages/api/v2/admin/users/[userId]/role.ts @@ -2,13 +2,13 @@ import { timingSafeEqual } from 'crypto' import type { NextApiRequest, NextApiResponse } from 'next' import { UserNotFoundError } from 'server/domain/error' import { ENV } from 'server/ENV' -import { Provider } from 'server/provider' -import { UserService } from 'server/service/user.service' import { AdminUserRoleUpdateParamsSchema, type AdminUserRoleUpdateResponse, AdminUserRoleUpdateSchema, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { Provider } from 'server/provider' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' const isValidAdminRoleApiKey = (apiKey: string | string[] | undefined): boolean => { diff --git a/apps/web/pages/api/v2/announcements/dismiss.ts b/apps/web/pages/api/v2/announcements/dismiss.ts index 76f6014c..d6c20887 100644 --- a/apps/web/pages/api/v2/announcements/dismiss.ts +++ b/apps/web/pages/api/v2/announcements/dismiss.ts @@ -1,8 +1,8 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { BadRequestError, UserNotFoundError } from 'server/domain/error' +import { DismissAnnouncementsSchema } from 'server/http/schemas/announcements' import { Provider } from 'server/provider' import { AnnouncementService } from 'server/service/announcement.service' -import { DismissAnnouncementsSchema } from 'src/lib/schemas/announcements' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/app/version-policies/index.ts b/apps/web/pages/api/v2/app/version-policies/index.ts index 0fd44043..3d74bd1e 100644 --- a/apps/web/pages/api/v2/app/version-policies/index.ts +++ b/apps/web/pages/api/v2/app/version-policies/index.ts @@ -2,12 +2,12 @@ import { timingSafeEqual } from 'crypto' import type { NextApiRequest, NextApiResponse } from 'next' import { BadRequestError } from 'server/domain/error' import { ENV } from 'server/ENV' -import { Provider } from 'server/provider' -import { AppVersionService } from 'server/service/app-version.service' import { type AppVersionPolicyResponse, AppVersionPolicyUpdateSchema, -} from 'src/lib/schemas/app-versions' +} from 'server/http/schemas/app-versions' +import { Provider } from 'server/provider' +import { AppVersionService } from 'server/service/app-version.service' import { type ZodIssue, z } from 'zod' const isValidInternalApiKey = (apiKey: string | string[] | undefined): boolean => { diff --git a/apps/web/pages/api/v2/app/version/check.ts b/apps/web/pages/api/v2/app/version/check.ts index ac93005c..4a429968 100644 --- a/apps/web/pages/api/v2/app/version/check.ts +++ b/apps/web/pages/api/v2/app/version/check.ts @@ -1,8 +1,11 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError } from 'server/domain/error' +import { + type AppVersionCheckResponse, + AppVersionCheckSchema, +} from 'server/http/schemas/app-versions' import { Provider } from 'server/provider' import { AppVersionService } from 'server/service/app-version.service' -import { type AppVersionCheckResponse, AppVersionCheckSchema } from 'src/lib/schemas/app-versions' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/auth/apple/callback/index.ts b/apps/web/pages/api/v2/auth/apple/callback/index.ts index 67bc71d9..0e4872c4 100644 --- a/apps/web/pages/api/v2/auth/apple/callback/index.ts +++ b/apps/web/pages/api/v2/auth/apple/callback/index.ts @@ -1,10 +1,10 @@ import jwt from 'jsonwebtoken' import type { NextApiRequest, NextApiResponse } from 'next' import { ENV } from 'server/ENV' +import { AppleLoginCallbackPayloadSchema } from 'server/http/schemas/auth' import { Provider } from 'server/provider' import { AuthService } from 'server/service/auth.service' import { getSafeErrorName } from 'server/util/safe-error' -import { AppleLoginCallbackPayloadSchema } from 'src/lib/schemas/auth' import type { ZodIssue } from 'zod' import { z } from 'zod' diff --git a/apps/web/pages/api/v2/auth/kakao/callback/index.ts b/apps/web/pages/api/v2/auth/kakao/callback/index.ts index 7edda150..abb314a1 100644 --- a/apps/web/pages/api/v2/auth/kakao/callback/index.ts +++ b/apps/web/pages/api/v2/auth/kakao/callback/index.ts @@ -1,10 +1,10 @@ import jwt from 'jsonwebtoken' import type { NextApiRequest, NextApiResponse } from 'next' import { ENV } from 'server/ENV' +import { KakaoCallbackQuerySchema } from 'server/http/schemas/auth' import { Provider } from 'server/provider' import { AuthService } from 'server/service/auth.service' import { getSafeErrorName } from 'server/util/safe-error' -import { KakaoCallbackQuerySchema } from 'src/lib/schemas/auth' import type { ZodIssue } from 'zod' import { z } from 'zod' diff --git a/apps/web/pages/api/v2/auth/kakao/native/callback/index.ts b/apps/web/pages/api/v2/auth/kakao/native/callback/index.ts index 6f9e19f1..319769a3 100644 --- a/apps/web/pages/api/v2/auth/kakao/native/callback/index.ts +++ b/apps/web/pages/api/v2/auth/kakao/native/callback/index.ts @@ -1,10 +1,10 @@ import jwt from 'jsonwebtoken' import type { NextApiRequest, NextApiResponse } from 'next' import { ENV } from 'server/ENV' +import { KakaoNativeCallbackPayloadSchema } from 'server/http/schemas/auth' import { Provider } from 'server/provider' import { AuthService } from 'server/service/auth.service' import { getSafeErrorName } from 'server/util/safe-error' -import { KakaoNativeCallbackPayloadSchema } from 'src/lib/schemas/auth' import type { ZodIssue } from 'zod' import { z } from 'zod' diff --git a/apps/web/pages/api/v2/clubs/[uuid]/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/index.ts index 032f0f24..69254277 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError } from 'server/domain/error' import type { ClubDetail } from 'server/domain/model/Club' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/clubs/[uuid]/manager-requests/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/manager-requests/index.ts index e15d5a90..8e87e6a6 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/manager-requests/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/manager-requests/index.ts @@ -1,14 +1,14 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ConflictError, NotFoundError, UserNotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubService } from 'server/service/club.service' -import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { ClubManagerRequestPatchSchema, type ClubManagerRequestResponse, ClubManagerRequestSchema, -} from 'src/lib/schemas/managers' +} from 'server/http/schemas/managers' +import { Provider } from 'server/provider' +import { ClubService } from 'server/service/club.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' type ClubManagerRequestMutationResponse = { diff --git a/apps/web/pages/api/v2/clubs/[uuid]/recruitments/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/recruitments/index.ts index ec102657..7fc3bf90 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/recruitments/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/recruitments/index.ts @@ -1,11 +1,11 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { ClubRecruitmentParamsSchema, type PublicClubRecruitmentsResponse, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { Provider } from 'server/provider' +import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/clubs/[uuid]/recruitments/representative/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/recruitments/representative/index.ts index 203f1410..fcead68a 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/recruitments/representative/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/recruitments/representative/index.ts @@ -1,11 +1,11 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { type ClubRecruitmentDto, ClubRecruitmentParamsSchema, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { Provider } from 'server/provider' +import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/clubs/[uuid]/reviews/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/reviews/index.ts index 6e3adad9..0bf86287 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/reviews/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/reviews/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError, UserNotFoundError } from 'server/domain/error' +import { ClubUuidParamsSchema, UpdateClubReviewSchema } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { ReviewService } from 'server/service/review.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema, UpdateClubReviewSchema } from 'src/lib/schemas/clubs' import { z } from 'zod' export default async function handler(req: NextApiRequest, res: NextApiResponse) { diff --git a/apps/web/pages/api/v2/clubs/[uuid]/reviews/me/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/reviews/me/index.ts index 8e8b21f9..62d652ad 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/reviews/me/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/reviews/me/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError, UserNotFoundError } from 'server/domain/error' +import { ClubUuidParamsSchema, type MyReview } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { ReviewService } from 'server/service/review.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema, type MyReview } from 'src/lib/schemas/clubs' import { type ZodIssue, z } from 'zod' type ResponseData = MyReview | null diff --git a/apps/web/pages/api/v2/clubs/[uuid]/saved/index.ts b/apps/web/pages/api/v2/clubs/[uuid]/saved/index.ts index 44e64644..0ff747e2 100644 --- a/apps/web/pages/api/v2/clubs/[uuid]/saved/index.ts +++ b/apps/web/pages/api/v2/clubs/[uuid]/saved/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError, UserNotFoundError } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import { z } from 'zod' export default async function handler(req: NextApiRequest, res: NextApiResponse) { diff --git a/apps/web/pages/api/v2/clubs/rankings/index.ts b/apps/web/pages/api/v2/clubs/rankings/index.ts index 2f415179..1845439b 100644 --- a/apps/web/pages/api/v2/clubs/rankings/index.ts +++ b/apps/web/pages/api/v2/clubs/rankings/index.ts @@ -1,7 +1,7 @@ import type { NextApiRequest, NextApiResponse } from 'next' +import { type ClubRanking, ClubRankingsQuerySchema } from 'server/http/schemas/clubs' import { Provider } from 'server/provider' import { ReviewService } from 'server/service/review.service' -import { type ClubRanking, ClubRankingsQuerySchema } from 'src/lib/schemas/clubs' type ResponseData = { rankings: ClubRanking[] diff --git a/apps/web/pages/api/v2/clubs/register/index.ts b/apps/web/pages/api/v2/clubs/register/index.ts index 1a27347a..7527274f 100644 --- a/apps/web/pages/api/v2/clubs/register/index.ts +++ b/apps/web/pages/api/v2/clubs/register/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { BadRequestError, UserNotFoundError } from 'server/domain/error' +import { ClubRegisterRequestSchema, type ClubRegisterResponse } from 'server/http/schemas/managers' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' import { UserService } from 'server/service/user.service' -import { ClubRegisterRequestSchema, type ClubRegisterResponse } from 'src/lib/schemas/managers' import { type ZodIssue, z } from 'zod' type ClubRegisterFailedResponse = { diff --git a/apps/web/pages/api/v2/manager-transfer-invitations/[token]/acceptance.ts b/apps/web/pages/api/v2/manager-transfer-invitations/[token]/acceptance.ts index 88dbff1a..fbe638e3 100644 --- a/apps/web/pages/api/v2/manager-transfer-invitations/[token]/acceptance.ts +++ b/apps/web/pages/api/v2/manager-transfer-invitations/[token]/acceptance.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ConflictError, NotFoundError, UserNotFoundError } from 'server/domain/error' +import { + type ManagerTransferAcceptanceResponse, + ManagerTransferTokenParamsSchema, +} from 'server/http/schemas/manager-transfer' import { Provider } from 'server/provider' import { ClubManagerTransferService } from 'server/service/club-manager-transfer.service' import { UserService } from 'server/service/user.service' import { getSafeDatabaseErrorContext } from 'server/util/safe-error' -import { - type ManagerTransferAcceptanceResponse, - ManagerTransferTokenParamsSchema, -} from 'src/lib/schemas/manager-transfer' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/manager-transfer-invitations/[token]/index.ts b/apps/web/pages/api/v2/manager-transfer-invitations/[token]/index.ts index 703ad9bc..16d7b401 100644 --- a/apps/web/pages/api/v2/manager-transfer-invitations/[token]/index.ts +++ b/apps/web/pages/api/v2/manager-transfer-invitations/[token]/index.ts @@ -1,12 +1,12 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError, UserNotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubManagerTransferService } from 'server/service/club-manager-transfer.service' -import { UserService } from 'server/service/user.service' import { type ManagerTransferInvitationResponse, ManagerTransferTokenParamsSchema, -} from 'src/lib/schemas/manager-transfer' +} from 'server/http/schemas/manager-transfer' +import { Provider } from 'server/provider' +import { ClubManagerTransferService } from 'server/service/club-manager-transfer.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/managers/[serviceUserId]/clubs/[uuid]/index.ts b/apps/web/pages/api/v2/managers/[serviceUserId]/clubs/[uuid]/index.ts index afbaf724..b273852c 100644 --- a/apps/web/pages/api/v2/managers/[serviceUserId]/clubs/[uuid]/index.ts +++ b/apps/web/pages/api/v2/managers/[serviceUserId]/clubs/[uuid]/index.ts @@ -1,8 +1,8 @@ import type { NextApiHandler } from 'next' import { NotFoundError } from 'server/domain/error' +import { ManagerClubParamsSchema } from 'server/http/schemas/managers' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' -import { ManagerClubParamsSchema } from 'src/lib/schemas/managers' import { z } from 'zod' import { UserService } from '../../../../../../../server/service/user.service' diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/activity-images/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/activity-images/index.ts index 067e524c..356bf4b8 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/activity-images/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/activity-images/index.ts @@ -7,11 +7,11 @@ import { UserNotFoundError, } from 'server/domain/error' import { ENV } from 'server/ENV' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { uploadClubImageStream } from 'server/infra/client/s3' import { Provider } from 'server/provider' import { ClubAccessService } from 'server/service/club-access.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import { v4 as uuidv4 } from 'uuid' import { z } from 'zod' diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/images/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/images/index.ts index 944935dd..b69988a4 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/images/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/images/index.ts @@ -1,11 +1,11 @@ import Busboy from 'busboy' import type { NextApiRequest, NextApiResponse, PageConfig } from 'next' import { UserNotFoundError } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' import { uploadClubImageStream } from 'server/infra/client/s3' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' import { v4 as uuidv4 } from 'uuid' import { z } from 'zod' import { ENV } from '../../../../../../../../server/ENV' diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/index.ts index 46e41153..ab5d91f6 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/index.ts @@ -6,11 +6,11 @@ import { NotFoundError, UserNotFoundError, } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' +import { ManagedClubPatchSchema } from 'server/http/schemas/managers' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' -import { ManagedClubPatchSchema } from 'src/lib/schemas/managers' import { z } from 'zod' const api: NextApiHandler = async (req, res) => { diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager-transfer-invitations/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager-transfer-invitations/index.ts index 30ebd566..8a7e6da6 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager-transfer-invitations/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager-transfer-invitations/index.ts @@ -1,10 +1,10 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError, NotFoundError, UserNotFoundError } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' +import type { ManagerTransferInvitationCreateResponse } from 'server/http/schemas/manager-transfer' import { Provider } from 'server/provider' import { ClubManagerTransferService } from 'server/service/club-manager-transfer.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' -import type { ManagerTransferInvitationCreateResponse } from 'src/lib/schemas/manager-transfer' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager/index.ts index d712d97e..62f8544f 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/manager/index.ts @@ -6,11 +6,11 @@ import { NotFoundError, UserNotFoundError, } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' +import type { ClubRegistrationManager } from 'server/http/schemas/managers' import { Provider } from 'server/provider' import { ClubService } from 'server/service/club.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' -import type { ClubRegistrationManager } from 'src/lib/schemas/managers' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/images/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/images/index.ts index d5d10d8b..ed4e0860 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/images/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/images/index.ts @@ -1,11 +1,11 @@ import Busboy from 'busboy' import type { NextApiRequest, NextApiResponse, PageConfig } from 'next' import { UserNotFoundError } from 'server/domain/error' +import { ClubRecruitmentParamsSchema } from 'server/http/schemas/club-recruitments' import { uploadClubImageStream } from 'server/infra/client/s3' import { Provider } from 'server/provider' import { ClubAccessService } from 'server/service/club-access.service' import { UserService } from 'server/service/user.service' -import { ClubRecruitmentParamsSchema } from 'src/lib/schemas/club-recruitments' import { v4 as uuidv4 } from 'uuid' import { z } from 'zod' import { ENV } from '../../../../../../../../../server/ENV' diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/index.ts index 99abca1e..999bf73d 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/recruitments/index.ts @@ -5,14 +5,14 @@ import { NotFoundError, UserNotFoundError, } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubRecruitmentService } from 'server/service/club-recruitment.service' -import { UserService } from 'server/service/user.service' import { ClubRecruitmentParamsSchema, CreateClubRecruitmentSchema, type CreateRecruitmentResponse, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { Provider } from 'server/provider' +import { ClubRecruitmentService } from 'server/service/club-recruitment.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts index 0b1ade7f..5fac6f64 100644 --- a/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts +++ b/apps/web/pages/api/v2/managers/me/clubs/[uuid]/verifications/index.ts @@ -6,11 +6,11 @@ import { NotFoundError, UserNotFoundError, } from 'server/domain/error' +import { ClubUuidParamsSchema } from 'server/http/schemas/clubs' +import type { CreateVerificationRequestResponse } from 'server/http/schemas/managers' import { Provider } from 'server/provider' import { ClubVerificationService } from 'server/service/club-verification.service' import { UserService } from 'server/service/user.service' -import { ClubUuidParamsSchema } from 'src/lib/schemas/clubs' -import type { CreateVerificationRequestResponse } from 'src/lib/schemas/managers' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/managers/me/recruitments/[recruitmentId]/index.ts b/apps/web/pages/api/v2/managers/me/recruitments/[recruitmentId]/index.ts index 55f5a088..d8545d0e 100644 --- a/apps/web/pages/api/v2/managers/me/recruitments/[recruitmentId]/index.ts +++ b/apps/web/pages/api/v2/managers/me/recruitments/[recruitmentId]/index.ts @@ -1,13 +1,13 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { ForbiddenError, NotFoundError, UserNotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubRecruitmentService } from 'server/service/club-recruitment.service' -import { UserService } from 'server/service/user.service' import { RecruitmentIdParamsSchema, UpdateClubRecruitmentSchema, type UpdateRecruitmentResponse, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { Provider } from 'server/provider' +import { ClubRecruitmentService } from 'server/service/club-recruitment.service' +import { UserService } from 'server/service/user.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/recruitments/[recruitmentId]/index.ts b/apps/web/pages/api/v2/recruitments/[recruitmentId]/index.ts index 93bec8d5..32e3f4ab 100644 --- a/apps/web/pages/api/v2/recruitments/[recruitmentId]/index.ts +++ b/apps/web/pages/api/v2/recruitments/[recruitmentId]/index.ts @@ -1,11 +1,11 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError } from 'server/domain/error' -import { Provider } from 'server/provider' -import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { type PublicClubRecruitmentDetailResponse, RecruitmentIdParamsSchema, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { Provider } from 'server/provider' +import { ClubRecruitmentService } from 'server/service/club-recruitment.service' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/terms/agree.ts b/apps/web/pages/api/v2/terms/agree.ts index a27278e3..b1cda933 100644 --- a/apps/web/pages/api/v2/terms/agree.ts +++ b/apps/web/pages/api/v2/terms/agree.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { BadRequestError, UserNotFoundError } from 'server/domain/error' +import { AgreeTermsSchema } from 'server/http/schemas/terms' import { Provider } from 'server/provider' import { TermsService } from 'server/service/terms.service' import { UserService } from 'server/service/user.service' -import { AgreeTermsSchema } from 'src/lib/schemas/terms' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/users/me/index.ts b/apps/web/pages/api/v2/users/me/index.ts index d56f6380..339a9809 100644 --- a/apps/web/pages/api/v2/users/me/index.ts +++ b/apps/web/pages/api/v2/users/me/index.ts @@ -1,8 +1,8 @@ import type { NextApiRequest, NextApiResponse } from 'next' import type { User } from 'server/domain/model/User' +import { UpdateProfileSchema } from 'server/http/schemas/users' import { Provider } from 'server/provider' import { UserService } from 'server/service/user.service' -import { UpdateProfileSchema } from 'src/lib/schemas/users' import { type ZodIssue, z } from 'zod' import { UserNotFoundError } from '../../../../../server/domain/error' import { bearerToken } from '../../../../../server/util/token' diff --git a/apps/web/pages/api/v2/users/me/notifications/[id]/read.ts b/apps/web/pages/api/v2/users/me/notifications/[id]/read.ts index 6c177114..dd97d28d 100644 --- a/apps/web/pages/api/v2/users/me/notifications/[id]/read.ts +++ b/apps/web/pages/api/v2/users/me/notifications/[id]/read.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { NotFoundError, UserNotFoundError } from 'server/domain/error' +import { UserNotificationReadParamsSchema } from 'server/http/schemas/users' import { Provider } from 'server/provider' import { UserService } from 'server/service/user.service' import { UserNotificationService } from 'server/service/user-notification.service' -import { UserNotificationReadParamsSchema } from 'src/lib/schemas/users' import { type ZodIssue, z } from 'zod' export default async function handler( diff --git a/apps/web/pages/api/v2/users/me/voices/index.ts b/apps/web/pages/api/v2/users/me/voices/index.ts index af9a5d04..6068ed7d 100644 --- a/apps/web/pages/api/v2/users/me/voices/index.ts +++ b/apps/web/pages/api/v2/users/me/voices/index.ts @@ -1,9 +1,9 @@ import type { NextApiRequest, NextApiResponse } from 'next' import { UserNotFoundError } from 'server/domain/error' +import { UserVoiceSchema } from 'server/http/schemas/users' import { Provider } from 'server/provider' import { DiscordService } from 'server/service/discord.service' import { UserService } from 'server/service/user.service' -import { UserVoiceSchema } from 'src/lib/schemas/users' import { z } from 'zod' export default async function handler(req: NextApiRequest, res: NextApiResponse) { diff --git a/apps/web/src/lib/openapi/register-paths.ts b/apps/web/server/http/openapi/register-paths.ts similarity index 99% rename from apps/web/src/lib/openapi/register-paths.ts rename to apps/web/server/http/openapi/register-paths.ts index 91d34dc1..6d67609f 100644 --- a/apps/web/src/lib/openapi/register-paths.ts +++ b/apps/web/server/http/openapi/register-paths.ts @@ -1,4 +1,4 @@ -import { registry } from 'src/lib/openapi/swagger' +import { registry } from 'server/http/openapi/swagger' import { AdminClubDetailResponseSchema, AdminClubHistoriesQuerySchema, @@ -20,22 +20,22 @@ import { AdminUserRoleUpdateParamsSchema, AdminUserRoleUpdateResponseSchema, AdminUserRoleUpdateSchema, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' import { AnnouncementsResponseSchema, DismissAnnouncementsSchema, -} from 'src/lib/schemas/announcements' +} from 'server/http/schemas/announcements' import { AppVersionCheckResponseSchema, AppVersionCheckSchema, AppVersionPolicyResponseSchema, AppVersionPolicyUpdateSchema, -} from 'src/lib/schemas/app-versions' +} from 'server/http/schemas/app-versions' import { AppleLoginCallbackPayloadSchema, KakaoCallbackQuerySchema, KakaoNativeCallbackPayloadSchema, -} from 'src/lib/schemas/auth' +} from 'server/http/schemas/auth' import { ClubRecruitmentParamsSchema, ClubRecruitmentSchema, @@ -46,7 +46,7 @@ import { RecruitmentIdParamsSchema, UpdateClubRecruitmentSchema, UpdateRecruitmentResponseSchema, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' import { ClubCategoriesResponseSchema, ClubListByCategoryQuerySchema, @@ -60,7 +60,7 @@ import { MyReviewSchema, ReviewKeywordCategoriesResponseSchema, UpdateClubReviewSchema, -} from 'src/lib/schemas/clubs' +} from 'server/http/schemas/clubs' import { ClubDetailSchema, HealthCheckSchema, @@ -69,13 +69,13 @@ import { TokenResponseSchema, UserSchema, ValidationIssueSchema, -} from 'src/lib/schemas/common' +} from 'server/http/schemas/common' import { ManagerTransferAcceptanceResponseSchema, ManagerTransferInvitationCreateResponseSchema, ManagerTransferInvitationResponseSchema, ManagerTransferTokenParamsSchema, -} from 'src/lib/schemas/manager-transfer' +} from 'server/http/schemas/manager-transfer' import { ClubActivityImageUploadResponseSchema, ClubImageUploadSchema, @@ -89,14 +89,14 @@ import { ManagedClubPatchSchema, ManagedClubsResponseSchema, ManagerClubParamsSchema, -} from 'src/lib/schemas/managers' -import { AgreeTermsSchema, TermsResponseSchema } from 'src/lib/schemas/terms' +} from 'server/http/schemas/managers' +import { AgreeTermsSchema, TermsResponseSchema } from 'server/http/schemas/terms' import { TestGuestRecentSearchDebugQuerySchema, TestGuestRecentSearchDebugResponseSchema, TestLoginResponseSchema, TestLoginSchema, -} from 'src/lib/schemas/test' +} from 'server/http/schemas/test' import { CollegeMajorsQuerySchema, CollegeMajorsResponseSchema, @@ -109,8 +109,8 @@ import { UserNotificationsResponseSchema, UserProfileResponseSchema, UserVoiceSchema, -} from 'src/lib/schemas/users' -import { z } from 'src/lib/schemas/zod' +} from 'server/http/schemas/users' +import { z } from 'server/http/schemas/zod' const ErrorMessageSchema = z.string() const NoContentResponse = { description: '성공적으로 처리되었습니다.' } diff --git a/apps/web/src/lib/openapi/swagger.ts b/apps/web/server/http/openapi/swagger.ts similarity index 100% rename from apps/web/src/lib/openapi/swagger.ts rename to apps/web/server/http/openapi/swagger.ts diff --git a/apps/web/src/lib/schemas/admin.test.ts b/apps/web/server/http/schemas/admin.test.ts similarity index 100% rename from apps/web/src/lib/schemas/admin.test.ts rename to apps/web/server/http/schemas/admin.test.ts diff --git a/apps/web/src/lib/schemas/admin.ts b/apps/web/server/http/schemas/admin.ts similarity index 99% rename from apps/web/src/lib/schemas/admin.ts rename to apps/web/server/http/schemas/admin.ts index 9f6e949b..65641f58 100644 --- a/apps/web/src/lib/schemas/admin.ts +++ b/apps/web/server/http/schemas/admin.ts @@ -1,6 +1,6 @@ import { CLUB_STATUSES, REJECTED_CLUB_STATUS } from 'server/domain/constants/club-status' import { UserRole } from 'server/domain/constants/user-role.enum' -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' const AdminClubManagerSchema = z.object({ name: z.string(), diff --git a/apps/web/src/lib/schemas/announcements.ts b/apps/web/server/http/schemas/announcements.ts similarity index 88% rename from apps/web/src/lib/schemas/announcements.ts rename to apps/web/server/http/schemas/announcements.ts index 3ab6831f..9cd4132e 100644 --- a/apps/web/src/lib/schemas/announcements.ts +++ b/apps/web/server/http/schemas/announcements.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' import { AnnouncementSchema } from './common' export const DismissAnnouncementsSchema = z diff --git a/apps/web/src/lib/schemas/app-versions.ts b/apps/web/server/http/schemas/app-versions.ts similarity index 97% rename from apps/web/src/lib/schemas/app-versions.ts rename to apps/web/server/http/schemas/app-versions.ts index 97bcf440..e6ad315c 100644 --- a/apps/web/src/lib/schemas/app-versions.ts +++ b/apps/web/server/http/schemas/app-versions.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' export const AppClientTypeSchema = z.enum(['android', 'ios']).openapi('AppClientType') diff --git a/apps/web/src/lib/schemas/auth.ts b/apps/web/server/http/schemas/auth.ts similarity index 91% rename from apps/web/src/lib/schemas/auth.ts rename to apps/web/server/http/schemas/auth.ts index a8e024ff..a085ff2f 100644 --- a/apps/web/src/lib/schemas/auth.ts +++ b/apps/web/server/http/schemas/auth.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' export const AppleLoginCallbackPayloadSchema = z .object({ diff --git a/apps/web/src/lib/schemas/club-recruitments.ts b/apps/web/server/http/schemas/club-recruitments.ts similarity index 99% rename from apps/web/src/lib/schemas/club-recruitments.ts rename to apps/web/server/http/schemas/club-recruitments.ts index bb2403a7..812274bd 100644 --- a/apps/web/src/lib/schemas/club-recruitments.ts +++ b/apps/web/server/http/schemas/club-recruitments.ts @@ -2,7 +2,7 @@ import { CLUB_RECRUITMENT_ACTIVITY_LOCATION_TYPES, REGULAR_MEETING_DAYS, } from 'server/domain/constants/club-recruitment' -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' const TimestampStringSchema = z .string() diff --git a/apps/web/src/lib/schemas/clubs.ts b/apps/web/server/http/schemas/clubs.ts similarity index 94% rename from apps/web/src/lib/schemas/clubs.ts rename to apps/web/server/http/schemas/clubs.ts index 0124a422..754716c1 100644 --- a/apps/web/src/lib/schemas/clubs.ts +++ b/apps/web/server/http/schemas/clubs.ts @@ -1,5 +1,9 @@ -import { ClubCategorySchema, ClubSchema, ReviewKeywordCategorySchema } from 'src/lib/schemas/common' -import { z } from 'src/lib/schemas/zod' +import { + ClubCategorySchema, + ClubSchema, + ReviewKeywordCategorySchema, +} from 'server/http/schemas/common' +import { z } from 'server/http/schemas/zod' export const ClubUuidParamsSchema = z .object({ diff --git a/apps/web/src/lib/schemas/common.ts b/apps/web/server/http/schemas/common.ts similarity index 98% rename from apps/web/src/lib/schemas/common.ts rename to apps/web/server/http/schemas/common.ts index bc3b34b1..7e943a00 100644 --- a/apps/web/src/lib/schemas/common.ts +++ b/apps/web/server/http/schemas/common.ts @@ -1,7 +1,7 @@ import { CLUB_RECRUIT_TYPES } from 'server/domain/constants/club-recruit-type' import { CLUB_STATUSES } from 'server/domain/constants/club-status' import { OFFICIAL_VERIFICATION_STATUSES } from 'server/domain/constants/official-verification-status' -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' export const ValidationIssueSchema = z .object({ diff --git a/apps/web/src/lib/schemas/manager-transfer.test.ts b/apps/web/server/http/schemas/manager-transfer.test.ts similarity index 100% rename from apps/web/src/lib/schemas/manager-transfer.test.ts rename to apps/web/server/http/schemas/manager-transfer.test.ts diff --git a/apps/web/src/lib/schemas/manager-transfer.ts b/apps/web/server/http/schemas/manager-transfer.ts similarity index 96% rename from apps/web/src/lib/schemas/manager-transfer.ts rename to apps/web/server/http/schemas/manager-transfer.ts index c8ed5d0c..4be305e1 100644 --- a/apps/web/src/lib/schemas/manager-transfer.ts +++ b/apps/web/server/http/schemas/manager-transfer.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' const ManagerTransferClubSchema = z.object({ club_uuid: z.string().uuid(), diff --git a/apps/web/src/lib/schemas/managers.test.ts b/apps/web/server/http/schemas/managers.test.ts similarity index 100% rename from apps/web/src/lib/schemas/managers.test.ts rename to apps/web/server/http/schemas/managers.test.ts diff --git a/apps/web/src/lib/schemas/managers.ts b/apps/web/server/http/schemas/managers.ts similarity index 98% rename from apps/web/src/lib/schemas/managers.ts rename to apps/web/server/http/schemas/managers.ts index c5bbb011..13e46403 100644 --- a/apps/web/src/lib/schemas/managers.ts +++ b/apps/web/server/http/schemas/managers.ts @@ -3,8 +3,8 @@ import { CLUB_CATEGORIES, CLUB_RECRUIT_TYPES, } from 'server/domain/constants/club-options' -import { ClubSchema } from 'src/lib/schemas/common' -import { z } from 'src/lib/schemas/zod' +import { ClubSchema } from 'server/http/schemas/common' +import { z } from 'server/http/schemas/zod' const ClubRecruitTypeInputSchema = z .union([z.enum([...CLUB_RECRUIT_TYPES, '매 학기', '매 년'] as const), z.literal('')]) diff --git a/apps/web/src/lib/schemas/terms.ts b/apps/web/server/http/schemas/terms.ts similarity index 86% rename from apps/web/src/lib/schemas/terms.ts rename to apps/web/server/http/schemas/terms.ts index d37cb493..5f0118df 100644 --- a/apps/web/src/lib/schemas/terms.ts +++ b/apps/web/server/http/schemas/terms.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' import { TermsSchema } from './common' export const AgreeTermsSchema = z diff --git a/apps/web/src/lib/schemas/test.ts b/apps/web/server/http/schemas/test.ts similarity index 96% rename from apps/web/src/lib/schemas/test.ts rename to apps/web/server/http/schemas/test.ts index 7db46882..002424bf 100644 --- a/apps/web/src/lib/schemas/test.ts +++ b/apps/web/server/http/schemas/test.ts @@ -1,4 +1,4 @@ -import { z } from 'src/lib/schemas/zod' +import { z } from 'server/http/schemas/zod' import { RecentSearchSchema } from './users' export const TestLoginSchema = z diff --git a/apps/web/src/lib/schemas/users.test.ts b/apps/web/server/http/schemas/users.test.ts similarity index 100% rename from apps/web/src/lib/schemas/users.test.ts rename to apps/web/server/http/schemas/users.test.ts diff --git a/apps/web/src/lib/schemas/users.ts b/apps/web/server/http/schemas/users.ts similarity index 95% rename from apps/web/src/lib/schemas/users.ts rename to apps/web/server/http/schemas/users.ts index fd277c5b..beac7078 100644 --- a/apps/web/src/lib/schemas/users.ts +++ b/apps/web/server/http/schemas/users.ts @@ -1,5 +1,5 @@ -import { ClubSchema, CollegeMajorSchema, UserSchema } from 'src/lib/schemas/common' -import { z } from 'src/lib/schemas/zod' +import { ClubSchema, CollegeMajorSchema, UserSchema } from 'server/http/schemas/common' +import { z } from 'server/http/schemas/zod' export const UpdateProfileSchema = z .object({ diff --git a/apps/web/src/lib/schemas/zod.ts b/apps/web/server/http/schemas/zod.ts similarity index 100% rename from apps/web/src/lib/schemas/zod.ts rename to apps/web/server/http/schemas/zod.ts diff --git a/apps/web/server/service/admin-club.service.ts b/apps/web/server/service/admin-club.service.ts index 3f09d5bb..553f9cef 100644 --- a/apps/web/server/service/admin-club.service.ts +++ b/apps/web/server/service/admin-club.service.ts @@ -13,7 +13,7 @@ import type { AdminClubsQuery, AdminClubVerificationRequestStatusUpdate, AdminClubVerificationRequestsQuery, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' import { type FindOptionsWhere, In, IsNull, Not, type Repository } from 'typeorm' import { ClubEntity, diff --git a/apps/web/server/service/club-recruitment.service.ts b/apps/web/server/service/club-recruitment.service.ts index 7af89622..417bf354 100644 --- a/apps/web/server/service/club-recruitment.service.ts +++ b/apps/web/server/service/club-recruitment.service.ts @@ -1,8 +1,8 @@ -import { formatYearMonth } from 'src/common/utils/formatYearMonth' import type { CreateClubRecruitment, UpdateClubRecruitment, -} from 'src/lib/schemas/club-recruitments' +} from 'server/http/schemas/club-recruitments' +import { formatYearMonth } from 'src/common/utils/formatYearMonth' import { IsNull, QueryFailedError, type Repository } from 'typeorm' import { ConflictError, NotFoundError } from '../domain/error' import { type ClubRecruitment, toClubRecruitmentDomain } from '../domain/model/ClubRecruitment' diff --git a/apps/web/server/service/club.service.ts b/apps/web/server/service/club.service.ts index 5ff55cbf..25864a9c 100644 --- a/apps/web/server/service/club.service.ts +++ b/apps/web/server/service/club.service.ts @@ -25,7 +25,7 @@ import type { ClubRegisterRequest, ClubRegistrationManager, ManagedClubPatch, -} from 'src/lib/schemas/managers' +} from 'server/http/schemas/managers' import { In, IsNull, type Repository } from 'typeorm' import { BadRequestError, ConflictError, ForbiddenError, NotFoundError } from '../domain/error' import type { ClubCategory } from '../domain/model/ClubCategory' diff --git a/apps/web/server/service/review.service.ts b/apps/web/server/service/review.service.ts index 9ae3fe60..c17dadfa 100644 --- a/apps/web/server/service/review.service.ts +++ b/apps/web/server/service/review.service.ts @@ -1,6 +1,6 @@ import type { Repository } from 'typeorm' -import type { ClubRanking, MyReview } from '../../src/lib/schemas/clubs' -import type { ReviewKeywordCategory } from '../../src/lib/schemas/common' +import type { ClubRanking, MyReview } from '../../server/http/schemas/clubs' +import type { ReviewKeywordCategory } from '../../server/http/schemas/common' import { UserClubReviewEntity } from '../infra/database/entities/user-club-review.entity' import { ClubReviewKeywordCategoryEntity } from '../infra/database/entities/user-club-review-category.entity' import { Inject, InjectRepository, Service } from '../provider' diff --git a/apps/web/server/service/user.service.ts b/apps/web/server/service/user.service.ts index 9b8a122d..b4ff856b 100644 --- a/apps/web/server/service/user.service.ts +++ b/apps/web/server/service/user.service.ts @@ -1,6 +1,6 @@ import { UserRole } from 'server/domain/constants/user-role.enum' import { IsNull, Not, type Repository } from 'typeorm' -import type { UpdateProfileDto } from '../../src/lib/schemas/users' +import type { UpdateProfileDto } from '../../server/http/schemas/users' import { ForbiddenError, UserNotFoundError } from '../domain/error' import type { CollegeMajor } from '../domain/model/CollegeMajor' import type { User } from '../domain/model/User' diff --git a/apps/web/src/admin/api.ts b/apps/web/src/admin/api.ts index 66f0b6f3..de3da287 100644 --- a/apps/web/src/admin/api.ts +++ b/apps/web/src/admin/api.ts @@ -1,13 +1,13 @@ import type { CollegeMajor } from 'server/domain/model/CollegeMajor' -import { ADMIN_AUTH_TOKEN_KEY, buildQuery } from 'src/admin/constants' -import type { AffiliationFilter, ClubStatus, StatusFilter } from 'src/admin/types' import type { AdminClubDetailResponse, AdminClubHistoriesResponse, AdminClubManagerRequestsResponse, AdminClubsResponse, AdminClubVerificationRequestsResponse, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' +import { ADMIN_AUTH_TOKEN_KEY, buildQuery } from 'src/admin/constants' +import type { AffiliationFilter, ClubStatus, StatusFilter } from 'src/admin/types' type FetchOptions = NonNullable[1]> type PaginationParams = { diff --git a/apps/web/src/admin/types.ts b/apps/web/src/admin/types.ts index 07782a45..5f252416 100644 --- a/apps/web/src/admin/types.ts +++ b/apps/web/src/admin/types.ts @@ -5,7 +5,7 @@ import type { AdminClubManagerRequestsResponse, AdminClubsResponse, AdminClubVerificationRequestsResponse, -} from 'src/lib/schemas/admin' +} from 'server/http/schemas/admin' export type { ClubDecisionStatus as DecisionStatus, ClubStatus } From e6eb55b34c3e875fa30a2ff9bfba62c58fc36585 Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 23:28:17 +0900 Subject: [PATCH 4/6] =?UTF-8?q?refactor(web):=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?=EC=A0=84=EC=9A=A9=20=EC=9C=A0=ED=8B=B8=EC=9D=84=20=EC=86=8C?= =?UTF-8?q?=EC=9C=A0=20=EA=B3=84=EC=B8=B5=EC=9C=BC=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/의 모호한 공용 폴더에 있던 서버 전용 파일 두 개를 실제 소비 계층으로 옮긴다. 둘 다 HTTP 계약과 무관하며 소비자가 서버 한 곳뿐이다. - src/lib/Holder.ts -> server/infra/database/connection-holder.ts 유일한 소비자는 datasource.ts이고, 실제 역할은 첫 database connection이 준비될 때까지 service proxy를 대기시키는 것이다. 범용 서버 도구가 아니라 database 초기화 장치이므로 이름과 위치를 그에 맞춘다. - src/common/utils/formatYearMonth.ts -> server/domain/club/recruitment-year-month.ts 문자열 포맷 도구가 아니라 모집공고 yearMonth 값의 생성 규칙이다. club-recruitment.service.ts와 club-recruitment.entity.ts가 같은 규칙을 적용하므로 모집공고 domain에 둔다. 동작은 그대로 둔다. Holder의 Promise 동작과 formatYearMonth의 로컬 시간 계산은 손대지 않았고, 이름 정리나 시간대 정책 변경은 별도 작업이다. Co-Authored-By: Claude Opus 5 (1M context) --- .../domain/club/recruitment-year-month.ts} | 0 .../Holder.ts => server/infra/database/connection-holder.ts} | 0 apps/web/server/infra/database/datasource.ts | 2 +- .../server/infra/database/entities/club-recruitment.entity.ts | 2 +- apps/web/server/service/club-recruitment.service.ts | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename apps/web/{src/common/utils/formatYearMonth.ts => server/domain/club/recruitment-year-month.ts} (100%) rename apps/web/{src/lib/Holder.ts => server/infra/database/connection-holder.ts} (100%) diff --git a/apps/web/src/common/utils/formatYearMonth.ts b/apps/web/server/domain/club/recruitment-year-month.ts similarity index 100% rename from apps/web/src/common/utils/formatYearMonth.ts rename to apps/web/server/domain/club/recruitment-year-month.ts diff --git a/apps/web/src/lib/Holder.ts b/apps/web/server/infra/database/connection-holder.ts similarity index 100% rename from apps/web/src/lib/Holder.ts rename to apps/web/server/infra/database/connection-holder.ts diff --git a/apps/web/server/infra/database/datasource.ts b/apps/web/server/infra/database/datasource.ts index 10dcf971..d5209905 100644 --- a/apps/web/server/infra/database/datasource.ts +++ b/apps/web/server/infra/database/datasource.ts @@ -1,7 +1,7 @@ import { DataSource } from 'typeorm' import 'reflect-metadata' -import Holder from 'src/lib/Holder' +import Holder from './connection-holder' import { MAIN_DATA_SOURCE_OPTIONS } from './datasource.config' export const connectionHolder = new Holder() diff --git a/apps/web/server/infra/database/entities/club-recruitment.entity.ts b/apps/web/server/infra/database/entities/club-recruitment.entity.ts index 9a0e95d3..1b1877a7 100644 --- a/apps/web/server/infra/database/entities/club-recruitment.entity.ts +++ b/apps/web/server/infra/database/entities/club-recruitment.entity.ts @@ -1,4 +1,4 @@ -import { formatYearMonth } from 'src/common/utils/formatYearMonth' +import { formatYearMonth } from 'server/domain/club/recruitment-year-month' import { BeforeInsert, BeforeUpdate, diff --git a/apps/web/server/service/club-recruitment.service.ts b/apps/web/server/service/club-recruitment.service.ts index 417bf354..299110e8 100644 --- a/apps/web/server/service/club-recruitment.service.ts +++ b/apps/web/server/service/club-recruitment.service.ts @@ -1,8 +1,8 @@ +import { formatYearMonth } from 'server/domain/club/recruitment-year-month' import type { CreateClubRecruitment, UpdateClubRecruitment, } from 'server/http/schemas/club-recruitments' -import { formatYearMonth } from 'src/common/utils/formatYearMonth' import { IsNull, QueryFailedError, type Repository } from 'typeorm' import { ConflictError, NotFoundError } from '../domain/error' import { type ClubRecruitment, toClubRecruitmentDomain } from '../domain/model/ClubRecruitment' From 5a640ac0c01d09e83f3204e6a841df92b8b40b25 Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 23:31:51 +0900 Subject: [PATCH 5/6] =?UTF-8?q?test(web):=20App=20Links=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20=EA=B3=84=EC=95=BD=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=9C=EC=9E=90=EB=A6=AC=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/lib/app-links.test.ts -> tests/deployment/app-links.test.ts 이 테스트가 node:fs와 createRequire를 쓴다는 사실은 서버 domain에 속한다는 증거가 아니다. 실패하는 사건을 보면 위치가 드러난다. AASA 파일에서 경로가 빠질 때, iOS entitlement에서 associated domain이 사라질 때, Android manifest와 인증서 등록이 어긋날 때, Next.js가 association 파일의 JSON header를 잃을 때 실패한다. 하나의 서버 모듈이 아니라 배포되는 여러 플랫폼 사이의 약속을 검사하므로 tests/deployment가 그 실패 이유를 이름으로 드러낸다. 경로 가정은 그대로 유지된다. process.cwd() 기준 웹·모바일·workflow 파일 읽기는 영향이 없고, 새 위치도 기존과 같은 두 단계 깊이라 next.config.js의 상대 경로 ../../ 가 그대로 성립한다. App Links 설정을 바꾸는 PR이 이 이동만 독립적으로 되돌리거나 수정할 수 있도록 별도 커밋으로 둔다. Co-Authored-By: Claude Opus 5 (1M context) --- apps/web/{src/lib => tests/deployment}/app-links.test.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/web/{src/lib => tests/deployment}/app-links.test.ts (100%) diff --git a/apps/web/src/lib/app-links.test.ts b/apps/web/tests/deployment/app-links.test.ts similarity index 100% rename from apps/web/src/lib/app-links.test.ts rename to apps/web/tests/deployment/app-links.test.ts From 5706d05cf4e12b74dd134c09db75d6dd6851c24b Mon Sep 17 00:00:00 2001 From: yabsed Date: Tue, 8 Sep 2026 23:42:34 +0900 Subject: [PATCH 6/6] =?UTF-8?q?chore(web):=20=EA=B3=84=EC=B8=B5=20?= =?UTF-8?q?=EA=B0=84=20import=20=EB=B0=A9=ED=96=A5=EC=9D=84=20Biome=20?= =?UTF-8?q?=EA=B7=9C=EC=B9=99=EC=9C=BC=EB=A1=9C=20=EA=B3=A0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 앞선 세 커밋이 서버의 타입, 상수, HTTP 계약을 server로 되돌렸지만 합의만으로는 되돌아가는 길이 열려 있다. 서버 정책이 다시 src/common에 추가되어도 지금은 아무 검사도 막지 못한다. noRestrictedImports로 두 방향을 차단한다. server/** ─X→ src/** src/** ─X→ server/service, server/provider, server/infra bare specifier와 상대 경로를 모두 막도록 각 group에 `**/` 접두 패턴을 함께 둔다. pages/api와 middleware는 서버 진입점이므로 대상이 아니다. src가 server/domain과 server/http/schemas를 참조하는 것은 허용한다. 현재 규칙은 type-only 여부를 표현하지 못하므로, 이 두 경로에서 값을 import할 때 브라우저 bundle에 서버 의존이 섞이지 않는지는 코드 리뷰가 계속 판단한다. 자동 검사는 위험한 실행 계층만 책임진다. biome check, typecheck, 전체 테스트와 프로덕션 빌드를 통과한다. Co-Authored-By: Claude Opus 5 (1M context) --- biome.json | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/biome.json b/biome.json index 9109755a..3d5c2572 100644 --- a/biome.json +++ b/biome.json @@ -100,6 +100,51 @@ "semicolons": "asNeeded" } } + }, + { + "includes": ["apps/web/server/**"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["src/**", "**/src/**"], + "message": "server는 src를 import할 수 없습니다. 서버가 소유하는 타입과 상수는 server/domain에, HTTP 계약은 server/http/schemas에 두세요." + } + ] + } + } + } + } + } + }, + { + "includes": ["apps/web/src/**"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": [ + "server/provider", + "server/{service,provider,infra}/**", + "**/server/provider", + "**/server/{service,provider,infra}/**" + ], + "message": "src는 server/service, server/provider, server/infra를 직접 import할 수 없습니다. 서버 호출은 pages/api를 거치고, 타입은 server/domain과 server/http/schemas에서 import type으로 가져오세요." + } + ] + } + } + } + } + } } ] }