feat: initial commit web-cad-neu with docker-compose, frontend and backend
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
/**
|
||||
* Database Interface – abstract DB layer for Web CAD
|
||||
*/
|
||||
|
||||
export interface DBProject {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string | null;
|
||||
owner_id: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface DBDrawing {
|
||||
id: string;
|
||||
project_id: string;
|
||||
name: string;
|
||||
data_json: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface DBLayer {
|
||||
id: string;
|
||||
drawing_id: string;
|
||||
name: string;
|
||||
visible: number;
|
||||
locked: number;
|
||||
color: string;
|
||||
line_type: string;
|
||||
transparency: number;
|
||||
sort_order: number;
|
||||
parent_id: string | null;
|
||||
}
|
||||
|
||||
export interface DBElement {
|
||||
id: string;
|
||||
drawing_id: string;
|
||||
layer_id: string;
|
||||
type: string;
|
||||
x: number;
|
||||
y: number;
|
||||
width: number;
|
||||
height: number;
|
||||
properties_json: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface DBBlock {
|
||||
id: string;
|
||||
drawing_id: string;
|
||||
name: string;
|
||||
description: string | null;
|
||||
category: string;
|
||||
elements_json: string;
|
||||
thumbnail: string | null;
|
||||
}
|
||||
|
||||
export interface DBSetting {
|
||||
key: string;
|
||||
value: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface DBUser {
|
||||
id: string;
|
||||
email: string;
|
||||
password_hash: string;
|
||||
name: string;
|
||||
role: string;
|
||||
created_at: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface DatabaseInterface {
|
||||
init(): Promise<void>;
|
||||
close(): void;
|
||||
|
||||
// Users
|
||||
getUser(id: string): DBUser | null;
|
||||
getUserByEmail(email: string): DBUser | null;
|
||||
createUser(data: Partial<DBUser>): DBUser;
|
||||
updateUser(id: string, data: Partial<DBUser>): DBUser | null;
|
||||
deleteUser(id: string): boolean;
|
||||
listUsers(): DBUser[];
|
||||
|
||||
// Projects
|
||||
listProjects(): DBProject[];
|
||||
getProject(id: string): DBProject | null;
|
||||
createProject(data: Partial<DBProject>): DBProject;
|
||||
updateProject(id: string, data: Partial<DBProject>): DBProject | null;
|
||||
deleteProject(id: string): boolean;
|
||||
|
||||
// Drawings
|
||||
listDrawings(projectId: string): DBDrawing[];
|
||||
getDrawing(id: string): DBDrawing | null;
|
||||
createDrawing(data: Partial<DBDrawing>): DBDrawing;
|
||||
updateDrawing(id: string, data: Partial<DBDrawing>): DBDrawing | null;
|
||||
deleteDrawing(id: string): boolean;
|
||||
|
||||
// Layers
|
||||
listLayers(drawingId: string): DBLayer[];
|
||||
createLayer(data: Partial<DBLayer>): DBLayer;
|
||||
updateLayer(id: string, data: Partial<DBLayer>): DBLayer | null;
|
||||
deleteLayer(id: string): boolean;
|
||||
|
||||
// Elements
|
||||
listElements(drawingId: string): DBElement[];
|
||||
createElement(data: Partial<DBElement>): DBElement;
|
||||
updateElement(id: string, data: Partial<DBElement>): DBElement | null;
|
||||
deleteElement(id: string): boolean;
|
||||
|
||||
// Blocks
|
||||
listBlocks(drawingId: string): DBBlock[];
|
||||
createBlock(data: Partial<DBBlock>): DBBlock;
|
||||
updateBlock(id: string, data: Partial<DBBlock>): DBBlock | null;
|
||||
deleteBlock(id: string): boolean;
|
||||
|
||||
// Settings
|
||||
getSetting(key: string): DBSetting | null;
|
||||
setSetting(key: string, value: string): void;
|
||||
}
|
||||
Reference in New Issue
Block a user