Fix build errors
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { and, desc, eq, like, sql, asc } from "drizzle-orm";
|
||||
import { alias } from "drizzle-orm/mysql-core";
|
||||
// import { alias } from "drizzle-orm/mysql-core";
|
||||
import { db } from "@/server/db";
|
||||
import {
|
||||
entries,
|
||||
@@ -88,7 +88,7 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
|
||||
const [items, countRows] = await Promise.all([
|
||||
(async () => {
|
||||
let q1 = db
|
||||
const q1 = db
|
||||
.select({
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
@@ -100,12 +100,12 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId));
|
||||
if (whereExpr) q1 = q1.where(whereExpr);
|
||||
return q1
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(whereExpr ?? sql`true`)
|
||||
.orderBy(sort === "id_desc" ? desc(entries.id) : entries.title)
|
||||
.limit(pageSize)
|
||||
.offset(offset);
|
||||
return q1;
|
||||
})(),
|
||||
db
|
||||
.select({ total: sql<number>`count(*)` })
|
||||
@@ -373,9 +373,10 @@ export async function getEntryById(id: number): Promise<EntryDetail | null> {
|
||||
|
||||
const downloadsBySeq = new Map<number, DownloadRow[]>();
|
||||
for (const row of downloadRows) {
|
||||
const arr = downloadsBySeq.get(row.releaseSeq) ?? [];
|
||||
const key = Number(row.releaseSeq);
|
||||
const arr = downloadsBySeq.get(key) ?? [];
|
||||
arr.push(row);
|
||||
downloadsBySeq.set(row.releaseSeq, arr);
|
||||
downloadsBySeq.set(key, arr);
|
||||
}
|
||||
|
||||
// Build a map of downloads grouped by release_seq
|
||||
@@ -386,22 +387,22 @@ export async function getEntryById(id: number): Promise<EntryDetail | null> {
|
||||
type: { id: null, name: null },
|
||||
language: { id: null, name: null },
|
||||
machinetype: { id: null, name: null },
|
||||
year: (r.year) ?? null,
|
||||
year: r.year != null ? Number(r.year) : null,
|
||||
comments: null,
|
||||
downloads: (downloadsBySeq.get(Number(r.releaseSeq)) ?? []).map((d) => ({
|
||||
id: d.id,
|
||||
id: Number(d.id),
|
||||
link: d.link,
|
||||
size: d.size ?? null,
|
||||
size: d.size != null ? Number(d.size) : null,
|
||||
md5: d.md5 ?? null,
|
||||
comments: d.comments ?? null,
|
||||
isDemo: !!d.isDemo,
|
||||
type: { id: d.filetypeId, name: d.filetypeName },
|
||||
type: { id: Number(d.filetypeId), name: d.filetypeName },
|
||||
language: { id: (d.dlLangId) ?? null, name: (d.dlLangName) ?? null },
|
||||
machinetype: { id: (d.dlMachineId) ?? null, name: (d.dlMachineName) ?? null },
|
||||
machinetype: { id: d.dlMachineId != null ? Number(d.dlMachineId) : null, name: (d.dlMachineName) ?? null },
|
||||
scheme: { id: (d.schemeId) ?? null, name: (d.schemeName) ?? null },
|
||||
source: { id: (d.sourceId) ?? null, name: (d.sourceName) ?? null },
|
||||
case: { id: (d.caseId) ?? null, name: (d.caseName) ?? null },
|
||||
year: (d.year) ?? null,
|
||||
year: d.year != null ? Number(d.year) : null,
|
||||
})),
|
||||
}));
|
||||
|
||||
@@ -437,19 +438,19 @@ export async function getEntryById(id: number): Promise<EntryDetail | null> {
|
||||
: [],
|
||||
releases: releasesData,
|
||||
downloadsFlat: downloadFlatRows.map((d) => ({
|
||||
id: d.id,
|
||||
id: Number(d.id),
|
||||
link: d.link,
|
||||
size: d.size ?? null,
|
||||
size: d.size != null ? Number(d.size) : null,
|
||||
md5: d.md5 ?? null,
|
||||
comments: d.comments ?? null,
|
||||
isDemo: !!d.isDemo,
|
||||
type: { id: d.filetypeId, name: d.filetypeName },
|
||||
type: { id: Number(d.filetypeId), name: d.filetypeName },
|
||||
language: { id: (d.dlLangId) ?? null, name: (d.dlLangName) ?? null },
|
||||
machinetype: { id: (d.dlMachineId) ?? null, name: (d.dlMachineName) ?? null },
|
||||
machinetype: { id: d.dlMachineId != null ? Number(d.dlMachineId) : null, name: (d.dlMachineName) ?? null },
|
||||
scheme: { id: (d.schemeId) ?? null, name: (d.schemeName) ?? null },
|
||||
source: { id: (d.sourceId) ?? null, name: (d.sourceName) ?? null },
|
||||
case: { id: (d.caseId) ?? null, name: (d.caseName) ?? null },
|
||||
year: (d.year) ?? null,
|
||||
year: d.year != null ? Number(d.year) : null,
|
||||
releaseSeq: Number(d.releaseSeq),
|
||||
})),
|
||||
};
|
||||
@@ -457,7 +458,7 @@ export async function getEntryById(id: number): Promise<EntryDetail | null> {
|
||||
|
||||
// ----- Labels -----
|
||||
|
||||
export interface LabelDetail extends LabelSummary {}
|
||||
export type LabelDetail = LabelSummary;
|
||||
|
||||
export interface LabelSearchParams {
|
||||
q?: string;
|
||||
@@ -482,20 +483,18 @@ export async function searchLabels(params: LabelSearchParams): Promise<PagedResu
|
||||
return { items: items, page, pageSize, total };
|
||||
}
|
||||
|
||||
// Using helper search_by_names for efficiency
|
||||
// Using helper search_by_names for efficiency via subselect to avoid raw identifier typing
|
||||
const pattern = `%${q}%`;
|
||||
const countRows = await db
|
||||
.select({ total: sql<number>`count(distinct ${sql.identifier("label_id")})` })
|
||||
.from(sql`search_by_names`)
|
||||
.where(like(sql.identifier("label_name"), pattern));
|
||||
.select({ total: sql<number>`count(*)` })
|
||||
.from(labels)
|
||||
.where(sql`${labels.id} in (select distinct label_id from search_by_names where label_name like ${pattern})`);
|
||||
const total = Number(countRows[0]?.total ?? 0);
|
||||
|
||||
const items = await db
|
||||
.select({ id: labels.id, name: labels.name, labeltypeId: labels.labeltypeId })
|
||||
.from(sql`search_by_names`)
|
||||
.innerJoin(labels, eq(labels.id, sql.identifier("label_id")))
|
||||
.where(like(sql.identifier("label_name"), pattern))
|
||||
.groupBy(labels.id)
|
||||
.from(labels)
|
||||
.where(sql`${labels.id} in (select distinct label_id from search_by_names where label_name like ${pattern})`)
|
||||
.orderBy(labels.name)
|
||||
.limit(pageSize)
|
||||
.offset(offset);
|
||||
|
||||
Reference in New Issue
Block a user