Add genre column to entries
Include genre data in entry search results and show it in the entries table layout. Signed-off-by: codex@lucy.xalior.com
This commit is contained in:
@@ -74,6 +74,8 @@ export interface SearchResultItem {
|
||||
id: number;
|
||||
title: string;
|
||||
isXrated: number;
|
||||
genreId: number | null;
|
||||
genreName?: string | null;
|
||||
machinetypeId: number | null;
|
||||
machinetypeName?: string | null;
|
||||
languageId: string | null;
|
||||
@@ -199,12 +201,15 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(whereExpr ?? sql`true`)
|
||||
@@ -239,12 +244,15 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(sql`${entries.id} in (select entry_id from (${union}) as matches)`)
|
||||
@@ -273,6 +281,8 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
@@ -280,6 +290,7 @@ export async function searchEntries(params: SearchParams): Promise<PagedResult<S
|
||||
})
|
||||
.from(searchByTitles)
|
||||
.innerJoin(entries, eq(entries.id, searchByTitles.entryId))
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(like(searchByTitles.entryTitle, pattern))
|
||||
@@ -1170,6 +1181,8 @@ export async function getLabelAuthoredEntries(labelId: number, params: LabelCont
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
@@ -1177,6 +1190,7 @@ export async function getLabelAuthoredEntries(labelId: number, params: LabelCont
|
||||
})
|
||||
.from(authors)
|
||||
.innerJoin(entries, eq(entries.id, authors.entryId))
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(eq(authors.labelId, labelId))
|
||||
@@ -1200,6 +1214,8 @@ export async function getLabelAuthoredEntries(labelId: number, params: LabelCont
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
@@ -1207,6 +1223,7 @@ export async function getLabelAuthoredEntries(labelId: number, params: LabelCont
|
||||
})
|
||||
.from(authors)
|
||||
.innerJoin(entries, eq(entries.id, authors.entryId))
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(and(eq(authors.labelId, labelId), sql`${entries.id} in (select entry_id from ${searchByTitles} where ${searchByTitles.entryTitle} like ${pattern})`))
|
||||
@@ -1236,6 +1253,8 @@ export async function getLabelPublishedEntries(labelId: number, params: LabelCon
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
@@ -1243,6 +1262,7 @@ export async function getLabelPublishedEntries(labelId: number, params: LabelCon
|
||||
})
|
||||
.from(publishers)
|
||||
.innerJoin(entries, eq(entries.id, publishers.entryId))
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(eq(publishers.labelId, labelId))
|
||||
@@ -1266,6 +1286,8 @@ export async function getLabelPublishedEntries(labelId: number, params: LabelCon
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
@@ -1273,6 +1295,7 @@ export async function getLabelPublishedEntries(labelId: number, params: LabelCon
|
||||
})
|
||||
.from(publishers)
|
||||
.innerJoin(entries, eq(entries.id, publishers.entryId))
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(and(eq(publishers.labelId, labelId), sql`${entries.id} in (select entry_id from ${searchByTitles} where ${searchByTitles.entryTitle} like ${pattern})`))
|
||||
@@ -1409,12 +1432,15 @@ export async function entriesByGenre(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(eq(entries.genretypeId, genreId))
|
||||
@@ -1435,12 +1461,15 @@ export async function entriesByGenre(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(and(eq(entries.genretypeId, genreId), sql`${entries.id} in (select entry_id from ${searchByTitles} where ${searchByTitles.entryTitle} like ${pattern})`))
|
||||
@@ -1470,12 +1499,15 @@ export async function entriesByLanguage(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(eq(entries.languageId, langId))
|
||||
@@ -1496,12 +1528,15 @@ export async function entriesByLanguage(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(and(eq(entries.languageId, langId), sql`${entries.id} in (select entry_id from ${searchByTitles} where ${searchByTitles.entryTitle} like ${pattern})`))
|
||||
@@ -1531,12 +1566,15 @@ export async function entriesByMachinetype(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(eq(entries.machinetypeId, mtId))
|
||||
@@ -1557,12 +1595,15 @@ export async function entriesByMachinetype(
|
||||
id: entries.id,
|
||||
title: entries.title,
|
||||
isXrated: entries.isXrated,
|
||||
genreId: entries.genretypeId,
|
||||
genreName: genretypes.name,
|
||||
machinetypeId: entries.machinetypeId,
|
||||
machinetypeName: machinetypes.name,
|
||||
languageId: entries.languageId,
|
||||
languageName: languages.name,
|
||||
})
|
||||
.from(entries)
|
||||
.leftJoin(genretypes, eq(genretypes.id, entries.genretypeId))
|
||||
.leftJoin(machinetypes, eq(machinetypes.id, entries.machinetypeId))
|
||||
.leftJoin(languages, eq(languages.id, entries.languageId))
|
||||
.where(and(eq(entries.machinetypeId, mtId), sql`${entries.id} in (select entry_id from ${searchByTitles} where ${searchByTitles.entryTitle} like ${pattern})`))
|
||||
|
||||
Reference in New Issue
Block a user