feat: Docker部署与CI/CD集成, 搜索栏修复, 上传目录改为data
This commit is contained in:
88
types.ts
Normal file
88
types.ts
Normal file
@@ -0,0 +1,88 @@
|
||||
|
||||
// Enterprise Architecture: Models & DTOs
|
||||
// In a real Next.js app, these would mirror Prisma Schema and Zod definitions.
|
||||
|
||||
export enum UserRole {
|
||||
USER = 'USER',
|
||||
ADMIN = 'ADMIN',
|
||||
CREATOR = 'CREATOR',
|
||||
MANAGER = 'MANAGER'
|
||||
}
|
||||
|
||||
export enum MaterialType {
|
||||
CODE = 'CODE',
|
||||
ASSET_ZIP = 'ASSET_ZIP',
|
||||
VIDEO = 'VIDEO'
|
||||
}
|
||||
|
||||
// User DTO
|
||||
export interface UserDTO {
|
||||
id: string;
|
||||
username: string;
|
||||
avatarUrl: string;
|
||||
role: UserRole;
|
||||
status: 'ACTIVE' | 'BANNED' | 'FLAGGED';
|
||||
createdAt: string;
|
||||
lastLogin: string;
|
||||
}
|
||||
|
||||
// Comment DTO
|
||||
export interface CommentDTO {
|
||||
id: string;
|
||||
content: string;
|
||||
author: UserDTO;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// Material DTO (The core resource)
|
||||
export interface MaterialDTO {
|
||||
id: string;
|
||||
title: string;
|
||||
description: string;
|
||||
type: MaterialType;
|
||||
contentUrl?: string; // URL for Video or Zip
|
||||
codeSnippet?: string; // For code snippets
|
||||
language?: string; // e.g., 'typescript', 'python'
|
||||
author: UserDTO;
|
||||
stats: {
|
||||
views: number;
|
||||
downloads: number;
|
||||
favorites: number;
|
||||
};
|
||||
tags: string[];
|
||||
createdAt: string;
|
||||
comments: CommentDTO[];
|
||||
favorites?: { userId: string; createdAt: string }[]; // For checking if current user favorited
|
||||
}
|
||||
|
||||
// Admin / System Config
|
||||
export interface SystemConfig {
|
||||
dbHost: string;
|
||||
dbPort: string;
|
||||
dbUser: string;
|
||||
dbPass: string;
|
||||
dbName: string;
|
||||
maintenanceMode: boolean;
|
||||
maxUploadMB: number;
|
||||
}
|
||||
|
||||
// API Response Wrappers
|
||||
export interface ApiResponse<T> {
|
||||
success: boolean;
|
||||
data?: T;
|
||||
error?: string;
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
export interface LoginResponse {
|
||||
token: string; // JWT in real app
|
||||
user: UserDTO;
|
||||
}
|
||||
|
||||
export interface PaginationResult<T> {
|
||||
items: T[];
|
||||
total: number;
|
||||
page: number;
|
||||
limit: number;
|
||||
hasNext: boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user