UNPKG

@overture-stack/lyric

Version:
89 lines (88 loc) 4.17 kB
import type { ExtractTablesWithRelations } from 'drizzle-orm'; import type { PgTransaction } from 'drizzle-orm/pg-core'; import type { PostgresJsQueryResultHKT } from 'drizzle-orm/postgres-js'; import { type NewSubmission, type Submission } from '@overture-stack/lyric-data-model/models'; import { BaseDependencies } from '../config/config.js'; import type { PaginationOptions, SubmissionDataDetailsRepositoryRecord, SubmissionDataSummaryRepositoryRecord } from '../utils/types.js'; declare const activeSubmissionRepository: (dependencies: BaseDependencies) => { /** * Save a new Active Submission in Database * @param data An Active Submission object to be saved * @returns The ID of the created Active Submission */ save: (data: NewSubmission) => Promise<number>; /** * Returns the entire active submission, including all data. */ getActiveSubmissionDetails: ({ categoryId, organization, username, }: { categoryId: number; username: string; organization: string; }) => Promise<Pick<Submission, "data" | "id"> | undefined>; /** * Finds the current Active Submission by parameters * @param {Object} params * @param {number} params.categoryId Category ID * @param {string} params.username Name of the user * @param {string} params.organization Organization name * @returns */ getActiveSubmissionSummary: ({ categoryId, username, organization, }: { categoryId: number; username: string; organization: string; }) => Promise<SubmissionDataSummaryRepositoryRecord | undefined>; /** * Finds a Submission by ID * @param {number} submissionId Submission ID * @returns The Submission found */ getSubmissionById: (submissionId: number) => Promise<SubmissionDataSummaryRepositoryRecord | undefined>; /** * Retun the Submission with data details by ID * This includes the `data` and `errors` columns * @param {number} submissionId Submission ID * @returns The Submission found */ getSubmissionDetailsById: (submissionId: number) => Promise<SubmissionDataDetailsRepositoryRecord | undefined>; /** * Update a Submission record in database * @param {number} submissionId Submission ID to update * @param {Partial<Submission>} newData Set fields to update * @param tx The transaction to use for the operation, optional * @returns An updated record */ update: (submissionId: number, newData: Partial<Submission>, tx?: PgTransaction<PostgresJsQueryResultHKT, Submission, ExtractTablesWithRelations<Submission>>) => Promise<number>; /** * Get Submissions by category * @param {number} categoryId - Category ID * @param {Object} paginationOptions - Pagination properties * @param {number} paginationOptions.page - Page number * @param {number} paginationOptions.pageSize - Items per page * @param {Object} filterOptions * @param {boolean} filterOptions.onlyActive - Filter by Active status * @param {string} filterOptions.username - Filter by creator's username * @param {string} filterOptions.organization - Filter by Organization * @returns One or many Active Submissions */ getSubmissionsByCategory: (categoryId: number, paginationOptions: PaginationOptions, filterOptions: { onlyActive: boolean; username?: string; organization?: string; }) => Promise<SubmissionDataSummaryRepositoryRecord[] | undefined>; /** * Count Submissions by category ID * @param {number} categoryId - Category ID * @param {Object} filterOptions * @param {boolean} filterOptions.onlyActive - Filter by Active status * @param {string} filterOptions.username - Filter by creator's username * @param {string} filterOptions.organization - Filter by Organization * @returns One or many Active Submissions */ getTotalSubmissionsByCategory: (categoryId: number, filterOptions: { onlyActive: boolean; username?: string; organization?: string; }) => Promise<number>; }; export default activeSubmissionRepository;