Add season number and episode number to progressitem
This commit is contained in:
parent
53801f926a
commit
01c96babd4
|
@ -184,6 +184,24 @@
|
||||||
"nullable": true,
|
"nullable": true,
|
||||||
"mappedType": "string"
|
"mappedType": "string"
|
||||||
},
|
},
|
||||||
|
"season_number": {
|
||||||
|
"name": "season_number",
|
||||||
|
"type": "int",
|
||||||
|
"unsigned": false,
|
||||||
|
"autoincrement": false,
|
||||||
|
"primary": false,
|
||||||
|
"nullable": true,
|
||||||
|
"mappedType": "integer"
|
||||||
|
},
|
||||||
|
"episode_number": {
|
||||||
|
"name": "episode_number",
|
||||||
|
"type": "int",
|
||||||
|
"unsigned": false,
|
||||||
|
"autoincrement": false,
|
||||||
|
"primary": false,
|
||||||
|
"nullable": true,
|
||||||
|
"mappedType": "integer"
|
||||||
|
},
|
||||||
"meta": {
|
"meta": {
|
||||||
"name": "meta",
|
"name": "meta",
|
||||||
"type": "jsonb",
|
"type": "jsonb",
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
import { Migration } from '@mikro-orm/migrations';
|
||||||
|
|
||||||
|
export class Migration20231105150807 extends Migration {
|
||||||
|
async up(): Promise<void> {
|
||||||
|
this.addSql(
|
||||||
|
'alter table "progress_items" add column "season_number" int null, add column "episode_number" int null;',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async down(): Promise<void> {
|
||||||
|
this.addSql('alter table "progress_items" drop column "season_number";');
|
||||||
|
this.addSql('alter table "progress_items" drop column "episode_number";');
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ export const progressMetaSchema = z.object({
|
||||||
title: z.string(),
|
title: z.string(),
|
||||||
year: z.number(),
|
year: z.number(),
|
||||||
poster: z.string().optional(),
|
poster: z.string().optional(),
|
||||||
type: z.string(),
|
type: z.union([z.literal('show'), z.literal('movie')]),
|
||||||
});
|
});
|
||||||
|
|
||||||
export type ProgressMeta = z.infer<typeof progressMetaSchema>;
|
export type ProgressMeta = z.infer<typeof progressMetaSchema>;
|
||||||
|
@ -29,6 +29,12 @@ export class ProgressItem {
|
||||||
@Property({ name: 'episode_id', nullable: true })
|
@Property({ name: 'episode_id', nullable: true })
|
||||||
episodeId?: string;
|
episodeId?: string;
|
||||||
|
|
||||||
|
@Property({ name: 'season_number', nullable: true })
|
||||||
|
seasonNumber?: number;
|
||||||
|
|
||||||
|
@Property({ name: 'episode_number', nullable: true })
|
||||||
|
episodeNumber?: number;
|
||||||
|
|
||||||
@Property({
|
@Property({
|
||||||
name: 'meta',
|
name: 'meta',
|
||||||
type: types.json,
|
type: types.json,
|
||||||
|
@ -48,8 +54,14 @@ export class ProgressItem {
|
||||||
|
|
||||||
export interface ProgressItemDTO {
|
export interface ProgressItemDTO {
|
||||||
tmdbId: string;
|
tmdbId: string;
|
||||||
seasonId?: string;
|
season: {
|
||||||
episodeId?: string;
|
id?: string;
|
||||||
|
number?: number;
|
||||||
|
};
|
||||||
|
episode: {
|
||||||
|
id?: string;
|
||||||
|
number?: number;
|
||||||
|
};
|
||||||
meta: {
|
meta: {
|
||||||
title: string;
|
title: string;
|
||||||
year: number;
|
year: number;
|
||||||
|
@ -66,8 +78,14 @@ export function formatProgressItem(
|
||||||
): ProgressItemDTO {
|
): ProgressItemDTO {
|
||||||
return {
|
return {
|
||||||
tmdbId: progressItem.tmdbId,
|
tmdbId: progressItem.tmdbId,
|
||||||
seasonId: progressItem.seasonId,
|
episode: {
|
||||||
episodeId: progressItem.episodeId,
|
id: progressItem.episodeId,
|
||||||
|
number: progressItem.episodeNumber,
|
||||||
|
},
|
||||||
|
season: {
|
||||||
|
id: progressItem.seasonId,
|
||||||
|
number: progressItem.seasonNumber,
|
||||||
|
},
|
||||||
meta: {
|
meta: {
|
||||||
title: progressItem.meta.title,
|
title: progressItem.meta.title,
|
||||||
year: progressItem.meta.year,
|
year: progressItem.meta.year,
|
||||||
|
|
|
@ -19,10 +19,12 @@ export const userProgressRouter = makeRouter((app) => {
|
||||||
}),
|
}),
|
||||||
body: z.object({
|
body: z.object({
|
||||||
meta: progressMetaSchema,
|
meta: progressMetaSchema,
|
||||||
seasonId: z.string().optional(),
|
|
||||||
episodeId: z.string().optional(),
|
|
||||||
duration: z.number(),
|
duration: z.number(),
|
||||||
watched: z.number(),
|
watched: z.number(),
|
||||||
|
seasonId: z.string().optional(),
|
||||||
|
episodeId: z.string().optional(),
|
||||||
|
seasonNumber: z.number().optional(),
|
||||||
|
episodeNumber: z.number().optional(),
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -38,12 +40,15 @@ export const userProgressRouter = makeRouter((app) => {
|
||||||
episodeId: body.episodeId,
|
episodeId: body.episodeId,
|
||||||
seasonId: body.seasonId,
|
seasonId: body.seasonId,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!progressItem) {
|
if (!progressItem) {
|
||||||
progressItem = new ProgressItem();
|
progressItem = new ProgressItem();
|
||||||
progressItem.tmdbId = params.tmdbid;
|
progressItem.tmdbId = params.tmdbid;
|
||||||
progressItem.userId = params.uid;
|
progressItem.userId = params.uid;
|
||||||
progressItem.episodeId = body.episodeId;
|
progressItem.episodeId = body.episodeId;
|
||||||
progressItem.seasonId = body.seasonId;
|
progressItem.seasonId = body.seasonId;
|
||||||
|
progressItem.episodeNumber = body.episodeNumber;
|
||||||
|
progressItem.seasonNumber = body.seasonNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
em.assign(progressItem, {
|
em.assign(progressItem, {
|
||||||
|
|
Loading…
Reference in New Issue