UNPKG

@crowdin/app-project-module

Version:

Module that generates for you all common endpoints for serving standalone Crowdin App

125 lines (124 loc) 8.07 kB
import { Client } from 'pg'; import { Storage } from '.'; import { Config, UnauthorizedConfig, CrowdinCredentials } from '../types'; import { IntegrationConfig, IntegrationCredentials, IntegrationFilesSnapshot, IntegrationSyncSettings, IntegrationWebhooks } from '../modules/integration/types'; import { CreateJobParams, GetActiveJobsParams, GetJobParams, GetFileTranslationCacheByLanguageParams, Job, TranslationCache, UpdateJobParams, UpdateTranslationCacheParams, GetFileTranslationCache, UnsyncedFiles, GetUnsyncedFiles, IntegrationSyncedData, GetAllJobsParams } from '../modules/integration/util/types'; import { UserErrors } from './types'; export interface PostgreStorageConfig { host?: string; connectionString?: string; user?: string; database?: string; password?: string; port?: number; keepAlive?: boolean; keepAliveInitialDelayMillis?: number; idle_in_transaction_session_timeout?: number; connectionTimeoutMillis?: number; } interface TableIndexes { [key: string]: { [key: string]: string; }; } export declare class PostgreStorage implements Storage { private config; private directoryPath; private migrationLockId; private _res?; private _rej?; private dbPromise; tables: { crowdin_credentials: string; integration_credentials: string; sync_settings: string; app_metadata: string; files_snapshot: string; webhooks: string; user_errors: string; integration_settings: string; job: string; translation_file_cache: string; unsynced_files: string; synced_data: string; }; tableIndexes: TableIndexes; constructor(config: Config | UnauthorizedConfig, directoryPath: string | null); private generateLockId; executeQuery<T>(command: (client: Client) => Promise<T>): Promise<T>; private hasDumpFiles; migrate(): Promise<void>; alterTables(client: Client): Promise<void>; addColumns(client: Client, newColumns: string[], tableName: string): Promise<void>; addColumn(client: Client, columnName: string, tableName: string, columnType: string): Promise<void>; addTables(client: Client): Promise<void>; saveCrowdinCredentials(credentials: CrowdinCredentials): Promise<void>; updateCrowdinCredentials(credentials: CrowdinCredentials): Promise<void>; getCrowdinCredentials(id: string): Promise<CrowdinCredentials | undefined>; getAllCrowdinCredentials(): Promise<CrowdinCredentials[]>; deleteCrowdinCredentials(id: string): Promise<void>; saveIntegrationCredentials(id: string, credentials: any, crowdinId: string): Promise<void>; updateIntegrationCredentials(id: string, credentials: any): Promise<void>; updateIntegrationManagers(id: string, managers: any): Promise<void>; getIntegrationCredentials(id: string): Promise<IntegrationCredentials | undefined>; getAllIntegrationCredentials(crowdinId: string): Promise<IntegrationCredentials[]>; deleteIntegrationCredentials(id: string): Promise<void>; deleteAllIntegrationCredentials(crowdinId: string): Promise<void>; saveMetadata(id: string, metadata: any, crowdinId: string): Promise<void>; updateMetadata(id: string, metadata: any, crowdinId: string): Promise<void>; getMetadata(id: string): Promise<any>; getAllMetadata(): Promise<any[]>; deleteMetadata(id: string): Promise<void>; getSyncSettingsByProvider(integrationId: string, provider: string): Promise<IntegrationSyncSettings | undefined>; getSyncSettingsBySchedule(type: string, schedule: string): Promise<IntegrationSyncSettings[]>; saveSyncSettings(files: any, integrationId: string, crowdinId: string, type: string, provider: string): Promise<void>; updateSyncSettings(files: any, integrationId: string, crowdinId: string, type: string, provider: string): Promise<void>; getSyncSettings(integrationId: string, crowdinId: string, type: string, provider: string): Promise<IntegrationSyncSettings | undefined>; saveFilesSnapshot(files: any, integrationId: string, crowdinId: string, provider: string): Promise<void>; updateFilesSnapshot(files: any, integrationId: string, crowdinId: string, provider: string): Promise<void>; getFilesSnapshot(integrationId: string, crowdinId: string, provider: string): Promise<IntegrationFilesSnapshot | undefined>; getAllWebhooks(integrationId: string, crowdinId: string, provider: string): Promise<IntegrationWebhooks[] | undefined>; getWebhooks(fileId: string, integrationId: string, crowdinId: string, provider: string): Promise<IntegrationWebhooks | undefined>; saveWebhooks(fileId: string, integrationId: string, crowdinId: string, provider: string): Promise<void>; deleteWebhooks(fileIds: any[], integrationId: string, crowdinId: string, provider: string): Promise<void>; getAllUserErrors(crowdinId: string, integrationId?: string): Promise<UserErrors[] | undefined>; saveUserError(action: string, message: string, data: any, createdAt: string, crowdinId: string, integrationId?: string): Promise<void>; deleteUserErrors(createdAt: string, crowdinId: string, integrationId?: string): Promise<void>; deleteAllUsersErrorsOlderThan(createdAt: string): Promise<void>; saveIntegrationConfig(integrationId: string, crowdinId: string, config: any): Promise<void>; getAllIntegrationConfigs(crowdinId: string): Promise<IntegrationConfig[]>; getIntegrationConfig(integrationId: string): Promise<IntegrationConfig | undefined>; updateIntegrationConfig(integrationId: string, config: any): Promise<void>; createJob({ integrationId, crowdinId, type, payload, title }: CreateJobParams): Promise<string>; updateJob({ id, progress, status, info, data, attempt, errors, processedEntities, }: UpdateJobParams): Promise<void>; getJob({ id }: GetJobParams): Promise<Job | undefined>; getActiveJobs({ integrationId, crowdinId }: GetActiveJobsParams): Promise<Job[] | undefined>; deleteFinishedJobs(): Promise<void>; getAllInProgressJobs(): Promise<Job[] | undefined>; getAllJobs({ integrationId, crowdinId, limit, offset }: GetAllJobsParams): Promise<Job[] | undefined>; saveTranslationCache({ integrationId, crowdinId, fileId, languageId, etag, }: TranslationCache): Promise<void>; getFileTranslationCache({ integrationId, crowdinId, fileId, }: GetFileTranslationCache): Promise<TranslationCache[] | undefined>; getFileTranslationCacheByLanguage({ integrationId, crowdinId, fileId, languageId, }: GetFileTranslationCacheByLanguageParams): Promise<TranslationCache | undefined>; updateTranslationCache({ integrationId, crowdinId, fileId, languageId, etag, }: UpdateTranslationCacheParams): Promise<void>; private migrateFromSqlite; saveUnsyncedFiles({ integrationId, crowdinId, files }: UnsyncedFiles): Promise<void>; updateUnsyncedFiles({ integrationId, crowdinId, files }: UnsyncedFiles): Promise<void>; getUnsyncedFiles({ integrationId, crowdinId }: GetUnsyncedFiles): Promise<UnsyncedFiles | undefined>; registerCustomTable(tableName: string, schema: Record<string, string>): Promise<void>; insertRecord(tableName: string, data: Record<string, any>): Promise<void>; selectRecords(tableName: string, options?: { columns?: string[]; whereClause?: string; orderBy?: string; limit?: number; offset?: number; distinct?: boolean; }, params?: any[]): Promise<any[]>; updateRecord(tableName: string, data: Record<string, any>, whereClause: string, params?: any[]): Promise<void>; deleteRecord(tableName: string, whereClause: string, params?: any[]): Promise<void>; saveSyncedData(files: any, integrationId: string, crowdinId: string, type: string): Promise<void>; updateSyncedData(files: any, integrationId: string, crowdinId: string, type: string): Promise<void>; getSyncedData(integrationId: string, crowdinId: string, type: string): Promise<IntegrationSyncedData | undefined>; resetSequences(): Promise<void>; } export {};