All files / src/server/router/projects index.ts

0% Statements 0/10
0% Branches 0/4
0% Functions 0/2
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                                                                                                         
import { AudioBookRepositoryPromise } from "@/repository/AudioBookRepository";
import { tRPCProcedure, tRPCRouter } from "../../tRPC";
import { TRPCError } from "@trpc/server";
 
export type AudioBookSummaryType = {
    id: string;
    name: string;
    plot: string;
    genre: string[];
 
    numCharacters: number;
    numEpisodes: number;
    numScenes: number;
    numDialogues: number;
 
    createdAt: number;
    updatedAt: number;
    lastAccessedAt: number;
    status: "ACTIVE" | "ARCHIVED" | "DELETED";
};
 
export const projectsRouter = tRPCRouter({
    get: tRPCProcedure.query(async () => {
        const AudioBookRepositoryResult = await AudioBookRepositoryPromise;
 
        if (AudioBookRepositoryResult.isErr()) {
            throw new TRPCError({
                code: "INTERNAL_SERVER_ERROR",
                message: "Failed to init 'AudioBookModel'",
                cause: AudioBookRepositoryResult.error.cause,
            });
        }
 
        const AudioBookRepository = AudioBookRepositoryResult.value;
        const findAllSummariesResult = await AudioBookRepository.findAllSummaries();
 
        if (findAllSummariesResult.isErr()) {
            throw new TRPCError({
                code: "INTERNAL_SERVER_ERROR",
                message: "Failed to find 'audioBookSummaries'",
            });
        }
 
        return findAllSummariesResult.value.map(({ id, createdAt, updatedAt, lastAccessedAt, ...rest }) => ({
            id: id.toString("hex"),
            createdAt: createdAt.getTime(),
            updatedAt: updatedAt.getTime(),
            lastAccessedAt: lastAccessedAt.getTime(),
            ...rest,
        })) satisfies AudioBookSummaryType[];
    }),
});