@overture-stack/lyric
Version:
Data Submission system
68 lines (67 loc) • 2.97 kB
TypeScript
import { type SubmissionRecordErrorDetails } from '@overture-stack/lyric-data-model/models';
import { BaseDependencies } from '../../config/config.js';
import type { FilenameEntityPair } from '../../utils/schemas.js';
import { type FlattenedSubmissionData } from '../../utils/submissionResponseParser.js';
import { CommitSubmissionResult, type DeleteSubmissionResult, type EntityData, type PaginationOptions, type SubmissionActionType, SubmissionSummary, type SubmitDataResult, type SubmitFileResult } from '../../utils/types.js';
declare const submissionService: (dependencies: BaseDependencies) => {
commitSubmission: (categoryId: number, submissionId: number, username: string) => Promise<CommitSubmissionResult>;
deleteActiveSubmissionById: (submissionId: number, username: string, force: boolean) => Promise<DeleteSubmissionResult>;
deleteActiveSubmissionEntity: (submissionId: number, username: string, filter: {
actionType: SubmissionActionType;
entityName: string;
index: number | null;
}) => Promise<SubmitDataResult>;
getSubmissionsByCategory: (categoryId: number, paginationOptions: PaginationOptions, filterOptions: {
onlyActive: boolean;
username?: string;
organization?: string;
}) => Promise<{
result: SubmissionSummary[];
metadata: {
totalRecords: number;
errorMessage?: string;
};
}>;
getSubmissionById: (submissionId: number) => Promise<SubmissionSummary | undefined>;
getSubmissionDetailsById: ({ submissionId, paginationOptions, filterOptions, }: {
submissionId: number;
paginationOptions: PaginationOptions;
filterOptions: {
entityNames: string[];
actionTypes: SubmissionActionType[];
};
}) => Promise<{
data: FlattenedSubmissionData[];
errors?: SubmissionRecordErrorDetails[];
}>;
getActiveSubmissionByOrganization: ({ categoryId, username, organization, }: {
categoryId: number;
username: string;
organization: string;
}) => Promise<SubmissionSummary | undefined>;
getOrCreateActiveSubmission: (params: {
username: string;
categoryId: number;
organization: string;
}) => Promise<number>;
submit: ({ data, categoryId, organization, username, }: {
data: EntityData;
categoryId: number;
organization: string;
username: string;
}) => Promise<SubmitDataResult | {
status: "UNKNOWN_CATEGORY";
description: string;
}>;
submitFiles: ({ files, categoryId, organization, username, fileEntityMap, }: {
files: Express.Multer.File[];
categoryId: number;
organization: string;
username: string;
fileEntityMap?: FilenameEntityPair[];
}) => Promise<SubmitFileResult | {
status: "UNKNOWN_CATEGORY";
description: string;
}>;
};
export default submissionService;