11import * as lo from 'lodash-es' ;
22
33import { db , op , schema } from '@app/drizzle' ;
4- import { BadRequestError } from '@app/lib/error.ts' ;
4+ import { BadRequestError , UnreachableError } from '@app/lib/error.ts' ;
55import { producer } from '@app/lib/kafka' ;
66import { CollectionType , EpisodeCollectionStatus , SubjectType } from '@app/lib/subject/type' ;
77import { decode } from '@app/lib/utils' ;
@@ -30,7 +30,7 @@ export interface TimelineMessage {
3030 uid : number ;
3131 subject : {
3232 id : number ;
33- type : SubjectType ;
33+ type : number ;
3434 } ;
3535 createdAt : number ;
3636 source : number ;
@@ -39,11 +39,11 @@ export interface TimelineMessage {
3939 uid : number ;
4040 subject : {
4141 id : number ;
42- type : SubjectType ;
42+ type : number ;
4343 } ;
4444 collect : {
4545 id : number ;
46- type : CollectionType ;
46+ type : number ;
4747 rate : number ;
4848 comment : string ;
4949 } ;
@@ -54,7 +54,7 @@ export interface TimelineMessage {
5454 uid : number ;
5555 subject : {
5656 id : number ;
57- type : SubjectType ;
57+ type : number ;
5858 } ;
5959 episode : {
6060 id : number ;
@@ -67,7 +67,7 @@ export interface TimelineMessage {
6767 uid : number ;
6868 subject : {
6969 id : number ;
70- type : SubjectType ;
70+ type : number ;
7171 eps : number ;
7272 volumes : number ;
7373 } ;
@@ -525,7 +525,7 @@ export const TimelineWriter: TimelineDatabaseWriter = {
525525 } ,
526526} ;
527527
528- function switchSubjectType ( ctype : CollectionType , stype : SubjectType ) : number {
528+ function switchSubjectType ( ctype : number , stype : number ) : number {
529529 switch ( stype ) {
530530 case SubjectType . Book : {
531531 const source = {
@@ -535,7 +535,7 @@ function switchSubjectType(ctype: CollectionType, stype: SubjectType): number {
535535 [ CollectionType . OnHold ] : 13 ,
536536 [ CollectionType . Dropped ] : 14 ,
537537 } ;
538- return source [ ctype ] ;
538+ return source [ ctype as keyof typeof source ] ;
539539 }
540540 case SubjectType . Anime :
541541 case SubjectType . Real : {
@@ -546,7 +546,7 @@ function switchSubjectType(ctype: CollectionType, stype: SubjectType): number {
546546 [ CollectionType . OnHold ] : 13 ,
547547 [ CollectionType . Dropped ] : 14 ,
548548 } ;
549- return source [ ctype ] ;
549+ return source [ ctype as keyof typeof source ] ;
550550 }
551551 case SubjectType . Music : {
552552 const source = {
@@ -556,7 +556,7 @@ function switchSubjectType(ctype: CollectionType, stype: SubjectType): number {
556556 [ CollectionType . OnHold ] : 13 ,
557557 [ CollectionType . Dropped ] : 14 ,
558558 } ;
559- return source [ ctype ] ;
559+ return source [ ctype as keyof typeof source ] ;
560560 }
561561 case SubjectType . Game : {
562562 const source = {
@@ -566,7 +566,10 @@ function switchSubjectType(ctype: CollectionType, stype: SubjectType): number {
566566 [ CollectionType . OnHold ] : 13 ,
567567 [ CollectionType . Dropped ] : 14 ,
568568 } ;
569- return source [ ctype ] ;
569+ return source [ ctype as keyof typeof source ] ;
570+ }
571+ default : {
572+ throw new UnreachableError ( `unexpected subject type: ${ stype } ` ) ;
570573 }
571574 }
572575}
0 commit comments