@openade/pel
Version:
Punto di Elaborazione (Elaboration Point) - Server library for managing PEMs and communicating with ADE
73 lines • 3.66 kB
TypeScript
import type { CorrispettiviEsito, CorrispettiviGiornalieri, DocumentoCommerciale, ElaborationPointCensus, ElaborationPointStatusInfo, EmissionPointCensus, EmissionPointStatusInfo, Journal } from '@openade/common';
export interface QueryFilter {
vatNumber?: string;
emissionPointId?: string;
elaborationPointId?: string;
dateFrom?: string;
dateTo?: string;
status?: string;
documentType?: string;
limit?: number;
offset?: number;
}
export interface AuditLogEntry {
entityType: string;
entityId: string;
action: string;
timestamp: string;
userId?: string;
metadata?: Record<string, unknown>;
}
export interface QueryResult<T> {
items: T[];
data: T[];
total: number;
hasMore: boolean;
}
export interface IDatabase {
saveEmissionPoint(census: EmissionPointCensus): Promise<void>;
getEmissionPoint(vatNumber: string, emissionPointId: string): Promise<EmissionPointCensus | null>;
updateEmissionPointStatus(vatNumber: string, emissionPointId: string, status: EmissionPointStatusInfo): Promise<void>;
listEmissionPoints(filter: QueryFilter): Promise<QueryResult<EmissionPointCensus>>;
deleteEmissionPoint(vatNumber: string, emissionPointId: string): Promise<void>;
saveElaborationPoint(census: ElaborationPointCensus): Promise<void>;
getElaborationPoint(vatNumber: string, elaborationPointId: string): Promise<ElaborationPointCensus | null>;
updateElaborationPointStatus(vatNumber: string, elaborationPointId: string, status: ElaborationPointStatusInfo): Promise<void>;
listElaborationPoints(filter: QueryFilter): Promise<QueryResult<ElaborationPointCensus>>;
saveDailyReceipts(receipts: CorrispettiviGiornalieri): Promise<void>;
getDailyReceipts(vatNumber: string, emissionPointId: string, date: string): Promise<CorrispettiviGiornalieri | null>;
saveDailyReceiptsOutcome(outcome: CorrispettiviEsito): Promise<void>;
getDailyReceiptsOutcome(vatNumber: string, emissionPointId: string, date: string): Promise<CorrispettiviEsito | null>;
listDailyReceipts(filter: QueryFilter): Promise<QueryResult<CorrispettiviGiornalieri>>;
saveDocument(document: DocumentoCommerciale): Promise<void>;
getDocument(vatNumber: string, emissionPointId: string, documentNumber: string): Promise<DocumentoCommerciale | null>;
getDocumentByHash?(hash: string): Promise<DocumentoCommerciale | null>;
listDocuments(filter: QueryFilter): Promise<QueryResult<DocumentoCommerciale>>;
deleteDocument(vatNumber: string, emissionPointId: string, documentNumber: string): Promise<void>;
saveJournal(journal: Journal): Promise<void>;
getJournal(vatNumber: string, emissionPointId: string, date: string): Promise<Journal | null>;
listJournals(filter: QueryFilter): Promise<QueryResult<Journal>>;
getAuditTrail(entityType: string, entityId: string, dateFrom?: string, dateTo?: string): Promise<AuditLogEntry[]>;
saveAuditLog(entry: {
timestamp: string;
entityType: string;
entityId: string;
action: string;
userId?: string;
metadata?: Record<string, unknown>;
}): Promise<void>;
isHealthy(): Promise<boolean>;
close(): Promise<void>;
beginTransaction?(): Promise<void>;
commitTransaction?(): Promise<void>;
rollbackTransaction?(): Promise<void>;
}
export interface DatabaseConfig {
type: 'postgres' | 'mysql' | 'mongodb' | 'sqlite' | 'custom';
connection: string | Record<string, unknown>;
poolSize?: number;
timeout?: number;
logging?: boolean;
options?: Record<string, unknown>;
}
//# sourceMappingURL=database.interface.d.ts.map