UNPKG

@overture-stack/lyric

Version:
381 lines (380 loc) 25.2 kB
import { type DbConfig } from '@overture-stack/lyric-data-model'; import type { FeaturesConfig, IdServiceConfig, LoggerConfig, SchemaServiceConfig, SubmissionServiceConfig, ValidatorConfig } from '../../../src/config/config.js'; export type LyricProviderConfig = { db: DbConfig; schemaService: SchemaServiceConfig; features?: FeaturesConfig; idService?: IdServiceConfig; logger?: LoggerConfig; submissionService?: SubmissionServiceConfig; validator?: ValidatorConfig; }; export type LyricProvider = Awaited<ReturnType<typeof createLyricProvider>>; export declare function createLyricProvider(config: LyricProviderConfig): Promise<{ disconnect: () => Promise<void>; configs: import("../../../src/config/config.js").BaseDependencies; routers: { audit: import("express").Router; category: import("express").Router; dictionary: import("express").Router; submission: import("express").Router; submittedData: import("express").Router; validator: import("express").Router; }; controllers: { audit: { byCategoryIdAndOrganization: import("express-serve-static-core").RequestHandler<{ organization: string; categoryId: string; }, unknown, object, import("../../../src/utils/schemas.js").PaginationQueryParams & import("../../../src/utils/schemas.js").AuditQueryParams, Record<string, any>>; }; category: { getDetails: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, object, import("qs").ParsedQs, Record<string, any>>; listAll: (req: import("express").Request, res: import("express").Response, next: import("express").NextFunction) => Promise<import("express").Response<any, Record<string, any>> | undefined>; }; dictionary: { registerDictionary: import("express-serve-static-core").RequestHandler<import("express-serve-static-core").ParamsDictionary, unknown, import("../../../src/utils/schemas.js").DictionaryRegisterBodyParams, import("qs").ParsedQs, Record<string, any>>; downloadDataFileTemplates: import("express-serve-static-core").RequestHandler<{ categoryId: string; }, unknown, unknown, { fileType?: "csv" | "tsv" | undefined; }, Record<string, any>>; getDictionaryJson: (req: import("express").Request, res: import("express").Response, next: import("express").NextFunction) => Promise<import("express").Response<any, Record<string, any>> | undefined>; }; submission: { commit: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").submissionCommitPathParams, unknown, object, import("qs").ParsedQs, Record<string, any>>; delete: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").submissionIdPathParam, unknown, object, import("../../../src/utils/schemas.js").SubmissionDeleteQueryParams, Record<string, any>>; deleteEntityName: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").SubmissionDeleteEntityNameParams, unknown, object, import("../../../src/utils/schemas.js").SubmissionDeleteEntityNameQueryParams, Record<string, any>>; deleteSubmittedDataBySystemId: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").DataDeleteBySystemIdPathParams, unknown, object, import("qs").ParsedQs, Record<string, any>>; editSubmittedData: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, Record<string, unknown>[], { entityName: string; organization: string; }, Record<string, any>>; getSubmissionsByCategory: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, object, import("../../../src/utils/schemas.js").SubmissionsByCategoryQueryParams, Record<string, any>>; getSubmissionById: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").submissionIdPathParam, unknown, object, import("qs").ParsedQs, Record<string, any>>; getSubmissionDetailsById: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").submissionIdPathParam, unknown, object, import("../../../src/utils/schemas.js").SubmissionsDetailsQueryParams, Record<string, any>>; getActiveByOrganization: import("express-serve-static-core").RequestHandler<{ organization: string; categoryId: string; }, unknown, object, import("qs").ParsedQs, Record<string, any>>; submit: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, import("@overture-stack/lectern-client").DataRecord[], { entityName: string; organization: string; }, Record<string, any>>; submitFiles: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, { filename: string; entity: string; }[] | undefined, { organization: string; }, Record<string, any>>; }; submittedData: { getSubmittedDataByCategory: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, object, import("../../../src/utils/schemas.js").DataQueryParams, Record<string, any>>; getSubmittedDataByOrganization: import("express-serve-static-core").RequestHandler<{ organization: string; categoryId: string; }, unknown, object, import("../../../src/utils/schemas.js").DataQueryParams, Record<string, any>>; getSubmittedDataByQuery: import("express-serve-static-core").RequestHandler<{ organization: string; categoryId: string; }, unknown, object, import("../../../src/utils/schemas.js").DataQueryParams, Record<string, any>>; getSubmittedDataBySystemId: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").DataGetBySystemIdPathParams, unknown, object, import("../../../src/utils/schemas.js").GetDataQueryParams, Record<string, any>>; getSubmittedDataByCategoryStream: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").CategoryPathParams, unknown, object, import("../../../src/utils/schemas.js").DataQueryParams, Record<string, any>>; }; validator: { existsRecord: import("express-serve-static-core").RequestHandler<import("../../../src/utils/schemas.js").ValidationPathParams, unknown, object, import("../../../src/utils/schemas.js").ValidationQueryParam, Record<string, any>>; }; }; services: { audit: { byCategoryIdAndOrganization: (categoryId: number, organization: string, filterOptions: import("../../../index.js").AuditFilterOptions) => Promise<{ data: import("../../../index.js").AuditDataResponse[]; metadata: { totalRecords: number; errorMessage?: string; }; }>; }; category: { getDetails: (categoryId: number) => Promise<import("../../../index.js").CategoryDetailsResponse | undefined>; listAll: () => Promise<import("../../../index.js").ListAllCategoriesResponse[]>; }; dictionary: { createDictionaryIfDoesNotExist: (dictionaryName: string, version: string, schemas: import("@overture-stack/lectern-client").Schema[], username?: string) => Promise<import("@overture-stack/lyric-data-model/models").Dictionary>; fetchDictionaryByVersion: (dictionaryName: string, version: string) => Promise<import("@overture-stack/lectern-client").Dictionary>; getActiveDictionaryByCategory: (categoryId: number) => Promise<import("@overture-stack/lyric-data-model/models").Dictionary | undefined>; register: ({ categoryName, dictionaryName, dictionaryVersion, defaultCentricEntity, username, }: { categoryName: string; dictionaryName: string; dictionaryVersion: string; defaultCentricEntity?: string; username?: string; }) => Promise<{ dictionary: import("@overture-stack/lyric-data-model/models").Dictionary; category: import("@overture-stack/lyric-data-model/models").Category; }>; }; submission: { commitSubmission: (categoryId: number, submissionId: number, username: string) => Promise<import("../../../index.js").CommitSubmissionResult>; deleteActiveSubmissionById: (submissionId: number, username: string, force: boolean) => Promise<import("../../../index.js").DeleteSubmissionResult>; deleteActiveSubmissionEntity: (submissionId: number, username: string, filter: { actionType: import("../../../index.js").SubmissionActionType; entityName: string; index: number | null; }) => Promise<import("../../../index.js").SubmitDataResult>; getSubmissionsByCategory: (categoryId: number, paginationOptions: import("../../../index.js").PaginationOptions, filterOptions: { onlyActive: boolean; username?: string; organization?: string; }) => Promise<{ result: import("../../../index.js").SubmissionSummary[]; metadata: { totalRecords: number; errorMessage?: string; }; }>; getSubmissionById: (submissionId: number) => Promise<import("../../../index.js").SubmissionSummary | undefined>; getSubmissionDetailsById: ({ submissionId, paginationOptions, filterOptions, }: { submissionId: number; paginationOptions: import("../../../index.js").PaginationOptions; filterOptions: { entityNames: string[]; actionTypes: import("../../../index.js").SubmissionActionType[]; }; }) => Promise<{ data: import("../../../src/utils/submissionResponseParser.js").FlattenedSubmissionData[]; errors?: import("@overture-stack/lyric-data-model/models").SubmissionRecordErrorDetails[]; }>; getActiveSubmissionByOrganization: ({ categoryId, username, organization, }: { categoryId: number; username: string; organization: string; }) => Promise<import("../../../index.js").SubmissionSummary | undefined>; getOrCreateActiveSubmission: (params: { username: string; categoryId: number; organization: string; }) => Promise<number>; submit: ({ data, categoryId, organization, username, }: { data: import("../../../index.js").EntityData; categoryId: number; organization: string; username: string; }) => Promise<import("../../../index.js").SubmitDataResult | { status: "UNKNOWN_CATEGORY"; description: string; }>; submitFiles: ({ files, categoryId, organization, username, fileEntityMap, }: { files: Express.Multer.File[]; categoryId: number; organization: string; username: string; fileEntityMap?: import("../../../src/utils/schemas.js").FilenameEntityPair[]; }) => Promise<import("../../../index.js").SubmitFileResult | { status: "UNKNOWN_CATEGORY"; description: string; }>; }; submittedData: { deleteSubmittedDataBySystemId: (categoryId: number, systemId: string, username: string) => Promise<{ description: string; inProcessEntities: string[]; status: import("../../../index.js").ActiveSubmissionStatus; submissionId?: string; }>; editSubmittedData: ({ categoryId, entityName, organization, records, username, }: { categoryId: number; entityName: string; organization: string; records: Record<string, unknown>[]; username: string; }) => Promise<{ description?: string; submissionId?: number; status: string; }>; getSubmittedDataByCategory: (categoryId: number, paginationOptions: import("../../../index.js").PaginationOptions, filterOptions: { entityName?: string[]; view: import("../../../index.js").ViewType; organizations?: string[]; }) => Promise<{ result: import("../../../index.js").SubmittedDataResponse[]; metadata: { totalRecords: number; errorMessage?: string; }; }>; getSubmittedDataByOrganization: (categoryId: number, organization: string, paginationOptions: import("../../../index.js").PaginationOptions, filterOptions: { sqon?: import("@overture-stack/sqon-builder").SQON; entityName?: string[]; view: import("../../../index.js").ViewType; }) => Promise<{ result: import("../../../index.js").SubmittedDataResponse[]; metadata: { totalRecords: number; errorMessage?: string; }; }>; getSubmittedDataBySystemId: (categoryId: number, systemId: string, filterOptions: { view: import("../../../index.js").ViewType; }) => Promise<{ result: import("../../../index.js").SubmittedDataResponse | undefined; metadata: { errorMessage?: string; }; }>; getSubmittedDataByCategoryStream: (categoryId: number, filterOptions: { entityName?: string[]; view: import("../../../index.js").ViewType; organizations?: string[]; }) => AsyncGenerator<import("../../../index.js").SubmittedDataResponse, { result: []; metadata: { totalRecords: number; errorMessage?: string; }; } | undefined, unknown>; }; validation: { existsRecord: ({ categoryId, entityName, field, organization, value, }: { categoryId: number; entityName: string; field: string; organization: string; value: string; }) => Promise<boolean>; }; }; repositories: { audit: { getRecordsByCategoryIdAndOrganizationPaginated: (categoryId: number, organization: string, filterOptions: import("../../../index.js").AuditFilterOptions) => Promise<import("../../../index.js").AuditRepositoryRecord[]>; getTotalRecordsByCategoryIdAndOrganization: (categoryId: number, organization: string, filterOptions: import("../../../index.js").AuditFilterOptions) => Promise<number>; }; category: { save: (data: import("@overture-stack/lyric-data-model/models").NewCategory) => Promise<import("@overture-stack/lyric-data-model/models").Category>; categoryIdExists: (categoryId: number) => Promise<boolean>; getAllCategoryNames: () => Promise<import("../../../index.js").ListAllCategoriesResponse[]>; getCategoryById: (id: number) => Promise<(import("@overture-stack/lyric-data-model/models").Category & { activeDictionary: import("@overture-stack/lyric-data-model/models").Dictionary | null; }) | undefined>; getCategoryByName: (name: string) => Promise<import("@overture-stack/lyric-data-model/models").Category | undefined>; getActiveDictionaryByCategory: (categoryId: number) => Promise<(import("@overture-stack/lectern-client").Dictionary & { id: number; }) | undefined>; update: (categoryId: number, newData: Partial<import("@overture-stack/lyric-data-model/models").Category>) => Promise<import("@overture-stack/lyric-data-model/models").Category>; }; dictionary: { save: (data: import("@overture-stack/lyric-data-model/models").NewDictionary) => Promise<import("@overture-stack/lyric-data-model/models").Dictionary>; getDictionary: (dictionaryName: string, version: string) => Promise<import("@overture-stack/lyric-data-model/models").Dictionary | undefined>; getDictionaryById: (dictionaryId: number) => Promise<import("@overture-stack/lyric-data-model/models").Dictionary | undefined>; }; submission: { save: (data: import("@overture-stack/lyric-data-model/models").NewSubmission) => Promise<number>; getActiveSubmissionDetails: ({ categoryId, organization, username, }: { categoryId: number; username: string; organization: string; }) => Promise<Pick<import("@overture-stack/lyric-data-model/models").Submission, "data" | "id"> | undefined>; getActiveSubmissionSummary: ({ categoryId, username, organization, }: { categoryId: number; username: string; organization: string; }) => Promise<import("../../../index.js").SubmissionDataSummaryRepositoryRecord | undefined>; getSubmissionById: (submissionId: number) => Promise<import("../../../index.js").SubmissionDataSummaryRepositoryRecord | undefined>; getSubmissionDetailsById: (submissionId: number) => Promise<import("../../../index.js").SubmissionDataDetailsRepositoryRecord | undefined>; update: (submissionId: number, newData: Partial<import("@overture-stack/lyric-data-model/models").Submission>, tx?: import("drizzle-orm/pg-core").PgTransaction<import("drizzle-orm/postgres-js").PostgresJsQueryResultHKT, import("@overture-stack/lyric-data-model/models").Submission, import("drizzle-orm").ExtractTablesWithRelations<import("@overture-stack/lyric-data-model/models").Submission>>) => Promise<number>; getSubmissionsByCategory: (categoryId: number, paginationOptions: import("../../../index.js").PaginationOptions, filterOptions: { onlyActive: boolean; username?: string; organization?: string; }) => Promise<import("../../../index.js").SubmissionDataSummaryRepositoryRecord[] | undefined>; getTotalSubmissionsByCategory: (categoryId: number, filterOptions: { onlyActive: boolean; username?: string; organization?: string; }) => Promise<number>; }; submittedData: { deleteBySystemId: (params: { diff: import("@overture-stack/lyric-data-model/models").DataDiff; submissionId: number; systemId: string; username: string; } | { diff: import("@overture-stack/lyric-data-model/models").DataDiff; submissionId: number; systemId: string; username: string; }[], tx?: import("drizzle-orm/pg-core").PgTransaction<import("drizzle-orm/postgres-js").PostgresJsQueryResultHKT, import("@overture-stack/lyric-data-model/models").SubmittedData, import("drizzle-orm").ExtractTablesWithRelations<import("@overture-stack/lyric-data-model/models").SubmittedData>>) => Promise<{ id: number; createdAt: Date | null; createdBy: string | null; updatedAt: Date | null; updatedBy: string | null; data: import("@overture-stack/lectern-client").DataRecord; dictionaryCategoryId: number; entityName: string; isValid: boolean; lastValidSchemaId: number | null; organization: string; originalSchemaId: number; systemId: string; }[]>; save: (data: import("@overture-stack/lyric-data-model/models").NewSubmittedData | import("@overture-stack/lyric-data-model/models").NewSubmittedData[], tx?: import("drizzle-orm/pg-core").PgTransaction<import("drizzle-orm/postgres-js").PostgresJsQueryResultHKT, import("@overture-stack/lyric-data-model/models").SubmittedData, import("drizzle-orm").ExtractTablesWithRelations<import("@overture-stack/lyric-data-model/models").SubmittedData>>) => Promise<{ id: number; } | { id: number; }[]>; getAllOrganizationsByCategoryId: (categoryId: number) => Promise<string[]>; getSubmittedDataByCategoryIdAndOrganization: (categoryId: number, organization: string) => Promise<import("@overture-stack/lyric-data-model/models").SubmittedData[]>; getSubmittedDataByCategoryIdPaginated: (categoryId: number, paginationOptions: import("../../../index.js").PaginationOptions, filter?: { entityNames?: string[]; organizations?: string[]; }) => Promise<import("../../../index.js").SubmittedDataResponse[]>; getSubmittedDataByCategoryIdAndOrganizationPaginated: (categoryId: number, organization: string, paginationOptions: import("../../../index.js").PaginationOptions, filter?: { sql?: import("drizzle-orm").SQL; entityNames?: string[]; }) => Promise<import("../../../index.js").SubmittedDataResponse[]>; getTotalRecordsByCategoryIdAndOrganization: (categoryId: number, organization: string, filter?: { sql?: import("drizzle-orm").SQL; entityNames?: string[]; }) => Promise<number>; getTotalRecordsByCategoryId: (categoryId: number, filter?: { sql?: import("drizzle-orm").SQL; entityNames?: string[]; organizations?: string[]; }) => Promise<number>; update: (params: { submittedDataId: number; dataDiff: import("@overture-stack/lyric-data-model/models").DataDiff; newData: Partial<import("@overture-stack/lyric-data-model/models").SubmittedData>; oldIsValid: boolean; submissionId: number; } | { submittedDataId: number; dataDiff: import("@overture-stack/lyric-data-model/models").DataDiff; newData: Partial<import("@overture-stack/lyric-data-model/models").SubmittedData>; oldIsValid: boolean; submissionId: number; }[], tx?: import("drizzle-orm/pg-core").PgTransaction<import("drizzle-orm/postgres-js").PostgresJsQueryResultHKT, import("@overture-stack/lyric-data-model/models").SubmittedData, import("drizzle-orm").ExtractTablesWithRelations<import("@overture-stack/lyric-data-model/models").SubmittedData>>) => Promise<import("@overture-stack/lyric-data-model/models").SubmittedData | import("@overture-stack/lyric-data-model/models").SubmittedData[]>; getSubmittedDataBySystemId: (systemId: string) => Promise<import("@overture-stack/lyric-data-model/models").SubmittedData | undefined>; getSubmittedDataFiltered: (organization: string, filterData: { entityName: string; dataField: string; dataValue: string | undefined; }[]) => Promise<import("@overture-stack/lyric-data-model/models").SubmittedData[]>; }; }; utils: { audit: typeof import("../../../src/utils/auditUtils.js"); convertSqonToQuery: typeof import("../../../src/utils/convertSqonToQuery.js"); dictionarySchemaRelations: typeof import("../../../src/utils/dictionarySchemaRelations.js"); dictionary: typeof import("../../../src/utils/dictionaryUtils.js"); errors: typeof import("../../../src/utils/errors.js"); schema: typeof import("../../../src/utils/schemas.js"); submission: typeof import("../../../src/utils/submissionUtils.js"); submittedData: typeof import("../../../src/utils/submittedDataUtils.js"); type: typeof import("../../../src/utils/types.js"); }; shutdown: () => Promise<void>; }>;