UNPKG

@developers-joyride/shortify

Version:

High performance URL shortener library with multi-database support (MongoDB, SQLite, PostgreSQL, MySQL)

60 lines (59 loc) 1.59 kB
export interface IUrl { urlId: string; originalUrl: string; shortUrl: string; clicks: number; createdAt: Date; expiresAt?: Date; } export interface IDatabaseAdapter { connect(): Promise<boolean>; disconnect(): Promise<void>; isConnected(): boolean; createUrl(url: Omit<IUrl, "createdAt">): Promise<IUrl>; findUrlByUrlId(urlId: string): Promise<IUrl | null>; findUrlByOriginalUrl(originalUrl: string): Promise<IUrl | null>; updateUrlClicks(urlId: string, clicks: number): Promise<void>; deleteUrl(urlId: string): Promise<boolean>; on(event: string, listener: (...args: any[]) => void): this; emit(event: string, ...args: any[]): boolean; } export interface DatabaseConfig { type: "mongodb" | "sqlite" | "postgresql" | "mysql"; connectionString?: string; host?: string; port?: number; database?: string; username?: string; password?: string; maxRetries?: number; retryDelay?: number; collectionName?: string; tableName?: string; } export interface SqliteConfig { database: string; maxRetries?: number; retryDelay?: number; tableName?: string; } export interface PostgresConfig { host: string; port: number; database: string; username: string; password: string; maxRetries?: number; retryDelay?: number; tableName?: string; } export interface MysqlConfig { host: string; port: number; database: string; username: string; password: string; maxRetries?: number; retryDelay?: number; tableName?: string; }