feat(database): add TypeScript interfaces for database models and API responses

This commit is contained in:
ryan 2025-06-18 14:24:07 +03:00
parent c7dc18f7b2
commit 74c3c7a805

84
src/types/database.ts Normal file
View file

@ -0,0 +1,84 @@
// Core Item type matching our Rust Item struct
export interface Item {
id: string;
name: string;
description: string;
wikidataId?: string;
customProperties: Record<string, string>;
}
// Database models (matching Prisma schema)
export interface DbUrl {
id: number;
url: string;
createdAt: Date;
}
export interface DbProperty {
id: number;
name: string;
globalUsageCount: number;
}
export interface DbItem {
id: string;
urlId: number;
wikidataId?: string;
itemOrder: number;
globalItemId: string;
}
export interface DbItemProperty {
globalItemId: string;
propertyId: number;
value: string;
}
export interface DbSelectedProperty {
urlId: number;
propertyId: number;
}
export interface DbDeletedProperty {
urlId: number;
globalItemId: string;
propertyId: number;
}
// API Response types
export interface ItemsResponse {
items: Item[];
selectedProperties: string[];
}
export interface PropertyResponse {
id: number;
name: string;
globalUsageCount: number;
}
// Wikidata types (for future integration)
export interface WikidataSuggestion {
id: string;
label: string;
description?: string;
}
export interface WikidataProperty {
id: string;
label: string;
value: string;
}
// Core properties that are always present
export const CORE_PROPERTIES = ['name', 'description'] as const;
export type CoreProperty = typeof CORE_PROPERTIES[number];
// Database operation results
export type DatabaseResult<T> = {
success: true;
data: T;
} | {
success: false;
error: string;
};