From d4d5cfa53208960e7b072dde70048651c4bc0e4f Mon Sep 17 00:00:00 2001 From: Naomi Carrigan Date: Thu, 19 Feb 2026 15:20:25 -0800 Subject: [PATCH] feat: add start and end dates --- api/prisma/schema.prisma | 9 + api/src/app/services/book.service.ts | 4 + api/src/app/services/game.service.ts | 8 + api/src/app/services/manga.service.ts | 8 + api/src/app/services/music.service.ts | 8 + api/src/app/services/show.service.ts | 8 + .../admin/admin-suggestions.component.ts | 67 +-- .../components/art/art-gallery.component.ts | 2 +- .../components/books/books-list.component.ts | 67 ++- .../components/games/games-list.component.ts | 79 +++- .../components/manga/manga-list.component.ts | 79 +++- .../components/music/music-list.component.ts | 75 ++- .../components/my-likes/my-likes.component.ts | 6 +- .../my-suggestions.component.ts | 38 +- .../components/shows/shows-list.component.ts | 79 +++- dev.env | 21 + eslint.config.mjs | 7 +- package.json | 1 + shared-types/eslint.config.mjs | 110 ++++- shared-types/jest.config.ts | 22 + shared-types/project.json | 17 +- shared-types/src/lib/book.types.ts | 22 +- shared-types/src/lib/game.types.ts | 22 +- shared-types/src/lib/manga.types.ts | 22 +- shared-types/src/lib/music.types.ts | 24 +- shared-types/src/lib/show.types.ts | 22 +- shared-types/test/art.types.spec.ts | 110 +++++ shared-types/test/audit.types.spec.ts | 129 +++++ shared-types/test/auth.types.spec.ts | 118 +++++ shared-types/test/book.types.spec.ts | 150 ++++++ shared-types/test/comment.types.spec.ts | 195 ++++++++ shared-types/test/common.types.spec.ts | 37 ++ shared-types/test/game.types.spec.ts | 175 +++++++ shared-types/test/like.types.spec.ts | 228 +++++++++ shared-types/test/manga.types.spec.ts | 172 +++++++ shared-types/test/music.types.spec.ts | 200 ++++++++ shared-types/test/show.types.spec.ts | 194 ++++++++ shared-types/test/suggestion.types.spec.ts | 440 ++++++++++++++++++ shared-types/tsconfig.json | 10 +- shared-types/tsconfig.spec.json | 7 + tsconfig.base.json | 2 +- 41 files changed, 2854 insertions(+), 140 deletions(-) create mode 100644 dev.env create mode 100644 shared-types/jest.config.ts create mode 100644 shared-types/test/art.types.spec.ts create mode 100644 shared-types/test/audit.types.spec.ts create mode 100644 shared-types/test/auth.types.spec.ts create mode 100644 shared-types/test/book.types.spec.ts create mode 100644 shared-types/test/comment.types.spec.ts create mode 100644 shared-types/test/common.types.spec.ts create mode 100644 shared-types/test/game.types.spec.ts create mode 100644 shared-types/test/like.types.spec.ts create mode 100644 shared-types/test/manga.types.spec.ts create mode 100644 shared-types/test/music.types.spec.ts create mode 100644 shared-types/test/show.types.spec.ts create mode 100644 shared-types/test/suggestion.types.spec.ts create mode 100644 shared-types/tsconfig.spec.json diff --git a/api/prisma/schema.prisma b/api/prisma/schema.prisma index a722689..e0a1454 100644 --- a/api/prisma/schema.prisma +++ b/api/prisma/schema.prisma @@ -24,7 +24,9 @@ model Game { platform String? status GameStatus dateAdded DateTime @default(now()) + dateStarted DateTime? dateCompleted DateTime? + dateFinished DateTime? rating Int? @db.Int @default(0) notes String? coverImage String? @@ -48,6 +50,7 @@ model Book { isbn String? status BookStatus dateAdded DateTime @default(now()) + dateStarted DateTime? dateFinished DateTime? rating Int? @db.Int @default(0) notes String? @@ -72,7 +75,9 @@ model Music { type MusicType status MusicStatus dateAdded DateTime @default(now()) + dateStarted DateTime? dateCompleted DateTime? + dateFinished DateTime? rating Int? @db.Int @default(0) notes String? coverArt String? @@ -115,7 +120,9 @@ model Show { type ShowType status ShowStatus dateAdded DateTime @default(now()) + dateStarted DateTime? dateCompleted DateTime? + dateFinished DateTime? rating Int? @db.Int @default(0) notes String? coverImage String? @@ -145,7 +152,9 @@ model Manga { author String status MangaStatus dateAdded DateTime @default(now()) + dateStarted DateTime? dateCompleted DateTime? + dateFinished DateTime? rating Int? @db.Int @default(0) notes String? coverImage String? diff --git a/api/src/app/services/book.service.ts b/api/src/app/services/book.service.ts index de13a29..afb97bc 100644 --- a/api/src/app/services/book.service.ts +++ b/api/src/app/services/book.service.ts @@ -24,6 +24,7 @@ export class BookService { ...book, status: book.status as unknown as BookStatus, dateAdded: book.dateAdded, + dateStarted: book.dateStarted || undefined, dateFinished: book.dateFinished || undefined, tags: book.tags ?? [], links: book.links ?? [], @@ -46,6 +47,7 @@ export class BookService { ...book, status: book.status as unknown as BookStatus, dateAdded: book.dateAdded, + dateStarted: book.dateStarted || undefined, dateFinished: book.dateFinished || undefined, tags: book.tags ?? [], links: book.links ?? [], @@ -69,6 +71,7 @@ export class BookService { ...book, status: book.status as unknown as BookStatus, dateAdded: book.dateAdded, + dateStarted: book.dateStarted || undefined, dateFinished: book.dateFinished || undefined, tags: book.tags ?? [], links: book.links ?? [], @@ -95,6 +98,7 @@ export class BookService { ...book, status: book.status as unknown as BookStatus, dateAdded: book.dateAdded, + dateStarted: book.dateStarted || undefined, dateFinished: book.dateFinished || undefined, tags: book.tags ?? [], links: book.links ?? [], diff --git a/api/src/app/services/game.service.ts b/api/src/app/services/game.service.ts index d763807..d748c22 100644 --- a/api/src/app/services/game.service.ts +++ b/api/src/app/services/game.service.ts @@ -24,7 +24,9 @@ export class GameService { ...game, status: game.status as unknown as GameStatus, dateAdded: game.dateAdded, + dateStarted: game.dateStarted || undefined, dateCompleted: game.dateCompleted || undefined, + dateFinished: game.dateFinished || undefined, tags: game.tags ?? [], links: game.links ?? [], createdAt: game.createdAt, @@ -46,7 +48,9 @@ export class GameService { ...game, status: game.status as unknown as GameStatus, dateAdded: game.dateAdded, + dateStarted: game.dateStarted || undefined, dateCompleted: game.dateCompleted || undefined, + dateFinished: game.dateFinished || undefined, tags: game.tags ?? [], links: game.links ?? [], createdAt: game.createdAt, @@ -69,7 +73,9 @@ export class GameService { ...game, status: game.status as unknown as GameStatus, dateAdded: game.dateAdded, + dateStarted: game.dateStarted || undefined, dateCompleted: game.dateCompleted || undefined, + dateFinished: game.dateFinished || undefined, tags: game.tags ?? [], links: game.links ?? [], createdAt: game.createdAt, @@ -95,7 +101,9 @@ export class GameService { ...game, status: game.status as unknown as GameStatus, dateAdded: game.dateAdded, + dateStarted: game.dateStarted || undefined, dateCompleted: game.dateCompleted || undefined, + dateFinished: game.dateFinished || undefined, tags: game.tags ?? [], links: game.links ?? [], createdAt: game.createdAt, diff --git a/api/src/app/services/manga.service.ts b/api/src/app/services/manga.service.ts index bc7dbfd..f63dcd0 100644 --- a/api/src/app/services/manga.service.ts +++ b/api/src/app/services/manga.service.ts @@ -21,7 +21,9 @@ export class MangaService { ...m, status: m.status as unknown as MangaStatus, dateAdded: m.dateAdded, + dateStarted: m.dateStarted || undefined, dateCompleted: m.dateCompleted || undefined, + dateFinished: m.dateFinished || undefined, tags: m.tags ?? [], links: m.links ?? [], createdAt: m.createdAt, @@ -40,7 +42,9 @@ export class MangaService { ...manga, status: manga.status as unknown as MangaStatus, dateAdded: manga.dateAdded, + dateStarted: manga.dateStarted || undefined, dateCompleted: manga.dateCompleted || undefined, + dateFinished: manga.dateFinished || undefined, tags: manga.tags ?? [], links: manga.links ?? [], createdAt: manga.createdAt, @@ -60,7 +64,9 @@ export class MangaService { ...manga, status: manga.status as unknown as MangaStatus, dateAdded: manga.dateAdded, + dateStarted: manga.dateStarted || undefined, dateCompleted: manga.dateCompleted || undefined, + dateFinished: manga.dateFinished || undefined, tags: manga.tags ?? [], links: manga.links ?? [], createdAt: manga.createdAt, @@ -83,7 +89,9 @@ export class MangaService { ...manga, status: manga.status as unknown as MangaStatus, dateAdded: manga.dateAdded, + dateStarted: manga.dateStarted || undefined, dateCompleted: manga.dateCompleted || undefined, + dateFinished: manga.dateFinished || undefined, tags: manga.tags ?? [], links: manga.links ?? [], createdAt: manga.createdAt, diff --git a/api/src/app/services/music.service.ts b/api/src/app/services/music.service.ts index b7c8e03..405d8f0 100644 --- a/api/src/app/services/music.service.ts +++ b/api/src/app/services/music.service.ts @@ -25,7 +25,9 @@ export class MusicService { type: music.type as unknown as MusicType, status: music.status as unknown as MusicStatus, dateAdded: music.dateAdded, + dateStarted: music.dateStarted || undefined, dateCompleted: music.dateCompleted || undefined, + dateFinished: music.dateFinished || undefined, tags: music.tags ?? [], links: music.links ?? [], createdAt: music.createdAt, @@ -48,7 +50,9 @@ export class MusicService { type: music.type as unknown as MusicType, status: music.status as unknown as MusicStatus, dateAdded: music.dateAdded, + dateStarted: music.dateStarted || undefined, dateCompleted: music.dateCompleted || undefined, + dateFinished: music.dateFinished || undefined, tags: music.tags ?? [], links: music.links ?? [], createdAt: music.createdAt, @@ -73,7 +77,9 @@ export class MusicService { type: music.type as unknown as MusicType, status: music.status as unknown as MusicStatus, dateAdded: music.dateAdded, + dateStarted: music.dateStarted || undefined, dateCompleted: music.dateCompleted || undefined, + dateFinished: music.dateFinished || undefined, tags: music.tags ?? [], links: music.links ?? [], createdAt: music.createdAt, @@ -103,7 +109,9 @@ export class MusicService { type: music.type as unknown as MusicType, status: music.status as unknown as MusicStatus, dateAdded: music.dateAdded, + dateStarted: music.dateStarted || undefined, dateCompleted: music.dateCompleted || undefined, + dateFinished: music.dateFinished || undefined, tags: music.tags ?? [], links: music.links ?? [], createdAt: music.createdAt, diff --git a/api/src/app/services/show.service.ts b/api/src/app/services/show.service.ts index 57d7206..7d87652 100644 --- a/api/src/app/services/show.service.ts +++ b/api/src/app/services/show.service.ts @@ -22,7 +22,9 @@ export class ShowService { type: show.type as unknown as ShowType, status: show.status as unknown as ShowStatus, dateAdded: show.dateAdded, + dateStarted: show.dateStarted || undefined, dateCompleted: show.dateCompleted || undefined, + dateFinished: show.dateFinished || undefined, tags: show.tags ?? [], links: show.links ?? [], createdAt: show.createdAt, @@ -42,7 +44,9 @@ export class ShowService { type: show.type as unknown as ShowType, status: show.status as unknown as ShowStatus, dateAdded: show.dateAdded, + dateStarted: show.dateStarted || undefined, dateCompleted: show.dateCompleted || undefined, + dateFinished: show.dateFinished || undefined, tags: show.tags ?? [], links: show.links ?? [], createdAt: show.createdAt, @@ -64,7 +68,9 @@ export class ShowService { type: show.type as unknown as ShowType, status: show.status as unknown as ShowStatus, dateAdded: show.dateAdded, + dateStarted: show.dateStarted || undefined, dateCompleted: show.dateCompleted || undefined, + dateFinished: show.dateFinished || undefined, tags: show.tags ?? [], links: show.links ?? [], createdAt: show.createdAt, @@ -91,7 +97,9 @@ export class ShowService { type: show.type as unknown as ShowType, status: show.status as unknown as ShowStatus, dateAdded: show.dateAdded, + dateStarted: show.dateStarted || undefined, dateCompleted: show.dateCompleted || undefined, + dateFinished: show.dateFinished || undefined, tags: show.tags ?? [], links: show.links ?? [], createdAt: show.createdAt, diff --git a/apps/frontend/src/app/components/admin/admin-suggestions.component.ts b/apps/frontend/src/app/components/admin/admin-suggestions.component.ts index 9194581..a0198ed 100644 --- a/apps/frontend/src/app/components/admin/admin-suggestions.component.ts +++ b/apps/frontend/src/app/components/admin/admin-suggestions.component.ts @@ -39,22 +39,22 @@ import { Suggestion, SuggestionStatus, SuggestionEntity } from '@library/shared- All ({{ suggestions().length }})