save current changes
This commit is contained in:
241
lib/types/index.ts
Normal file
241
lib/types/index.ts
Normal file
@ -0,0 +1,241 @@
|
||||
/**
|
||||
* 全Entity型定義・共有型
|
||||
* functional-design.md のデータモデルに対応。
|
||||
* タイムスタンプはISO8601文字列(TEXT)。真偽値はINTEGER(0/1)。
|
||||
*/
|
||||
|
||||
// ===== 列挙型 =====
|
||||
|
||||
export type UserRole = 'system_admin' | 'project_admin' | 'member' | 'guest';
|
||||
export type UserStatus = 'active' | 'inactive';
|
||||
export type ProjectStatus = 'active' | 'on_hold' | 'completed' | 'archived';
|
||||
export type ProjectMemberRole = 'admin' | 'member' | 'guest';
|
||||
export type BoardCategory =
|
||||
| 'notice'
|
||||
| 'spec'
|
||||
| 'minutes'
|
||||
| 'question'
|
||||
| 'decision'
|
||||
| 'trouble'
|
||||
| 'memo';
|
||||
export type TodoPriority = 'low' | 'normal' | 'high';
|
||||
export type MilestoneStatus = 'open' | 'closed';
|
||||
export type CalendarEventType =
|
||||
| 'meeting'
|
||||
| 'deadline'
|
||||
| 'milestone'
|
||||
| 'todo'
|
||||
| 'reminder'
|
||||
| 'custom';
|
||||
export type MeetingMemberStatus = 'invited' | 'accepted' | 'declined';
|
||||
export type NotificationType =
|
||||
| 'mention'
|
||||
| 'todo_assigned'
|
||||
| 'todo_due_soon'
|
||||
| 'meeting_invited'
|
||||
| 'board_commented'
|
||||
| 'project_added'
|
||||
| 'file_shared'
|
||||
| 'note_updated';
|
||||
|
||||
// ===== エンティティ =====
|
||||
|
||||
export interface User {
|
||||
id: number;
|
||||
name: string;
|
||||
email: string;
|
||||
passwordHash: string | null;
|
||||
avatarUrl: string | null;
|
||||
role: UserRole;
|
||||
status: UserStatus;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface Project {
|
||||
id: number;
|
||||
name: string;
|
||||
description: string | null;
|
||||
status: ProjectStatus;
|
||||
ownerId: number;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface ProjectMember {
|
||||
id: number;
|
||||
projectId: number;
|
||||
userId: number;
|
||||
role: ProjectMemberRole;
|
||||
joinedAt: string;
|
||||
}
|
||||
|
||||
export interface BoardThread {
|
||||
id: number;
|
||||
projectId: number;
|
||||
title: string;
|
||||
bodyMd: string;
|
||||
authorId: number;
|
||||
category: BoardCategory | null;
|
||||
isPinned: number;
|
||||
isImportant: number;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface BoardComment {
|
||||
id: number;
|
||||
threadId: number;
|
||||
authorId: number;
|
||||
bodyMd: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface ChatMessage {
|
||||
id: number;
|
||||
projectId: number;
|
||||
authorId: number;
|
||||
body: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface TodoColumn {
|
||||
id: number;
|
||||
projectId: number;
|
||||
name: string;
|
||||
orderIndex: number;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface TodoItem {
|
||||
id: number;
|
||||
projectId: number;
|
||||
columnId: number;
|
||||
title: string;
|
||||
description: string | null;
|
||||
assigneeId: number | null;
|
||||
creatorId: number;
|
||||
priority: TodoPriority;
|
||||
startDate: string | null;
|
||||
dueDate: string | null;
|
||||
completedAt: string | null;
|
||||
orderIndex: number;
|
||||
milestoneId: number | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface FileAsset {
|
||||
id: number;
|
||||
projectId: number;
|
||||
uploaderId: number;
|
||||
filename: string;
|
||||
originalName: string;
|
||||
mimeType: string;
|
||||
size: number;
|
||||
path: string;
|
||||
createdAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface ProjectNote {
|
||||
id: number;
|
||||
projectId: number;
|
||||
title: string;
|
||||
bodyMd: string;
|
||||
tags: string | null;
|
||||
isPinned: number;
|
||||
createdById: number;
|
||||
updatedById: number;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface Milestone {
|
||||
id: number;
|
||||
projectId: number;
|
||||
title: string;
|
||||
description: string | null;
|
||||
dueDate: string | null;
|
||||
status: MilestoneStatus;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface CalendarEvent {
|
||||
id: number;
|
||||
projectId: number;
|
||||
title: string;
|
||||
description: string | null;
|
||||
type: CalendarEventType;
|
||||
startAt: string;
|
||||
endAt: string | null;
|
||||
createdById: number;
|
||||
relatedTodoId: number | null;
|
||||
relatedMilestoneId: number | null;
|
||||
relatedMeetingId: number | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface Meeting {
|
||||
id: number;
|
||||
projectId: number;
|
||||
title: string;
|
||||
description: string | null;
|
||||
location: string | null;
|
||||
meetingUrl: string | null;
|
||||
startAt: string;
|
||||
endAt: string;
|
||||
agendaMd: string | null;
|
||||
minutesMd: string | null;
|
||||
createdById: number;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt: string | null;
|
||||
}
|
||||
|
||||
export interface MeetingMember {
|
||||
id: number;
|
||||
meetingId: number;
|
||||
userId: number;
|
||||
status: MeetingMemberStatus;
|
||||
}
|
||||
|
||||
export interface Notification {
|
||||
id: number;
|
||||
userId: number;
|
||||
projectId: number | null;
|
||||
type: NotificationType;
|
||||
title: string;
|
||||
body: string | null;
|
||||
readAt: string | null;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface ActivityLog {
|
||||
id: number;
|
||||
projectId: number;
|
||||
actorId: number;
|
||||
action: string;
|
||||
targetType: string;
|
||||
targetId: number | null;
|
||||
metadataJson: string | null;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface SchemaMigration {
|
||||
id: number;
|
||||
filename: string;
|
||||
appliedAt: string;
|
||||
}
|
||||
Reference in New Issue
Block a user