feat(m4): project & member management with tests and e2e
- ProjectRepository, ProjectMemberRepository, minimal NotificationRepository - ProjectService: create/update/archive/delete project, add/remove member, permission checks (isMember/admin), member-added notification, getDashboard skeleton, getMyProjects, getMemberRole - projectValidator, API services factory - API routes: projects CRUD, members list/add/remove - Screens: dashboard (project list + create form), project overview, members, settings; layout (Header/Sidebar/ProjectNav) and project components - Unit tests (Project/ProjectMember repositories, ProjectService), integration project-member-permission, e2e project-management
This commit is contained in:
24
lib/api/services.ts
Normal file
24
lib/api/services.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import { getDb } from '@/lib/db/sqlite';
|
||||
import { ProjectRepository } from '@/repositories/ProjectRepository';
|
||||
import { ProjectMemberRepository } from '@/repositories/ProjectMemberRepository';
|
||||
import { NotificationRepository } from '@/repositories/NotificationRepository';
|
||||
import { UserRepository } from '@/repositories/UserRepository';
|
||||
import { ProjectService } from '@/services/ProjectService';
|
||||
|
||||
/**
|
||||
* Route Handler用に各Repository/Serviceを構築するファクトリ。
|
||||
* 依存はすべて同じgetDb()接続を共有し、トランザクション境界を機能させる。
|
||||
*/
|
||||
export function createProjectService(): ProjectService {
|
||||
const db = getDb();
|
||||
return new ProjectService(
|
||||
new ProjectRepository(db),
|
||||
new ProjectMemberRepository(db),
|
||||
new NotificationRepository(db),
|
||||
db
|
||||
);
|
||||
}
|
||||
|
||||
export function createUserRepository(): UserRepository {
|
||||
return new UserRepository(getDb());
|
||||
}
|
||||
Reference in New Issue
Block a user