[READ-ONLY] Mirror of https://github.com/FoxxMD/multi-scrobbler. Scrobble plays from multiple sources to multiple clients docs.multi-scrobbler.app
deezer docker jellyfin koito lastfm listenbrainz maloja mopidy mpris music music-assistant plex scrobble self-hosted spotify subsonic tautulli youtube-music
0

Configure Feed

Select the types of activity you want to include in your feed.

feat(db): update updatedAt fields automatically

FoxxMD (Jul 2, 2026, 7:43 PM UTC) fb66f0ca c4b1d72f

+3 -3
+3 -3
src/backend/common/database/drizzle/schema/schema.ts
··· 73 73 error: ErrorLikeJson('error'), 74 74 playedAt: DayjsTimestamp('playedAt'), 75 75 seenAt: DayjsTimestamp('seenAt'), 76 - updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()), 76 + updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()).$onUpdate(() => dayjs()), 77 77 play: PlayJson('play').notNull(), // text({ mode: 'json' }).notNull().$type<PlayObject>(), 78 78 state: text({enum: ['queued','discovered','discarded','scrobbled','failed','duped']}).notNull(), 79 79 // https://orm.drizzle.team/docs/indexes-constraints#foreign-key ··· 145 145 retries: integer().notNull().default(0), 146 146 error: ErrorLikeJson('error'), 147 147 createdAt: DayjsTimestamp('createdAt').notNull().$defaultFn(() => dayjs()), 148 - updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()) 148 + updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()).$onUpdate(() => dayjs()) 149 149 }, (table) => [ 150 150 index('play_queue_state_id_idx').on(table.playId) 151 151 ]); ··· 208 208 imported: integer().notNull().default(0), 209 209 scrobbled: integer().notNull().default(0), 210 210 createdAt: DayjsTimestamp('createdAt').notNull().$defaultFn(() => dayjs()), 211 - updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()), 211 + updatedAt: DayjsTimestamp('updatedAt').notNull().$defaultFn(() => dayjs()).$onUpdate(() => dayjs()), 212 212 completedAt: DayjsTimestamp('completedAt') 213 213 }); 214 214