Update scheduling parameters and refactor channel endpoints: extend HorizonDays to 7 and RetentionDays to 90 in appsettings.json. Consolidate channel-related endpoint logic by removing obsolete files and enhancing the ShowEndpoints with audience and genre management capabilities. Improve error handling and streamline command handlers for channel operations.
build / backend (push) Successful in 7m40s
build / frontend (push) Failing after 39s
tests / backend-tests (push) Successful in 6m9s

This commit is contained in:
Leonid Pershin
2026-07-26 13:32:13 +03:00
parent c4ef954dea
commit 66040a8841
272 changed files with 27944 additions and 8699 deletions
+163
View File
@@ -17,7 +17,10 @@ import { Route as RegisterRouteImport } from './routes/register'
import { Route as SettingsRouteImport } from './routes/settings'
import { Route as AdminIndexRouteImport } from './routes/admin/index'
import { Route as AdminChannelsRouteImport } from './routes/admin/channels'
import { Route as AdminCollectionsRouteImport } from './routes/admin/collections'
import { Route as AdminGalleryRouteImport } from './routes/admin/gallery'
import { Route as AdminGenresRouteImport } from './routes/admin/genres'
import { Route as AdminGroupsRouteImport } from './routes/admin/groups'
import { Route as AdminMaintenanceRouteImport } from './routes/admin/maintenance'
import { Route as AdminMediaRouteImport } from './routes/admin/media'
import { Route as AdminRolesRouteImport } from './routes/admin/roles'
@@ -26,6 +29,10 @@ import { Route as AdminShowsRouteImport } from './routes/admin/shows'
import { Route as AdminUsersRouteImport } from './routes/admin/users'
import { Route as AdminChannelsIndexRouteImport } from './routes/admin/channels.index'
import { Route as AdminChannelsChannelIdRouteImport } from './routes/admin/channels.$channelId'
import { Route as AdminCollectionsIndexRouteImport } from './routes/admin/collections.index'
import { Route as AdminCollectionsCollectionIdRouteImport } from './routes/admin/collections.$collectionId'
import { Route as AdminGroupsIndexRouteImport } from './routes/admin/groups.index'
import { Route as AdminGroupsGroupIdRouteImport } from './routes/admin/groups.$groupId'
import { Route as AdminShowsIndexRouteImport } from './routes/admin/shows.index'
import { Route as AdminShowsShowIdRouteImport } from './routes/admin/shows.$showId'
@@ -69,11 +76,26 @@ const AdminChannelsRoute = AdminChannelsRouteImport.update({
path: '/channels',
getParentRoute: () => AdminRoute,
} as any)
const AdminCollectionsRoute = AdminCollectionsRouteImport.update({
id: '/collections',
path: '/collections',
getParentRoute: () => AdminRoute,
} as any)
const AdminGalleryRoute = AdminGalleryRouteImport.update({
id: '/gallery',
path: '/gallery',
getParentRoute: () => AdminRoute,
} as any)
const AdminGenresRoute = AdminGenresRouteImport.update({
id: '/genres',
path: '/genres',
getParentRoute: () => AdminRoute,
} as any)
const AdminGroupsRoute = AdminGroupsRouteImport.update({
id: '/groups',
path: '/groups',
getParentRoute: () => AdminRoute,
} as any)
const AdminMaintenanceRoute = AdminMaintenanceRouteImport.update({
id: '/maintenance',
path: '/maintenance',
@@ -114,6 +136,27 @@ const AdminChannelsChannelIdRoute = AdminChannelsChannelIdRouteImport.update({
path: '/$channelId',
getParentRoute: () => AdminChannelsRoute,
} as any)
const AdminCollectionsIndexRoute = AdminCollectionsIndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => AdminCollectionsRoute,
} as any)
const AdminCollectionsCollectionIdRoute =
AdminCollectionsCollectionIdRouteImport.update({
id: '/$collectionId',
path: '/$collectionId',
getParentRoute: () => AdminCollectionsRoute,
} as any)
const AdminGroupsIndexRoute = AdminGroupsIndexRouteImport.update({
id: '/',
path: '/',
getParentRoute: () => AdminGroupsRoute,
} as any)
const AdminGroupsGroupIdRoute = AdminGroupsGroupIdRouteImport.update({
id: '/$groupId',
path: '/$groupId',
getParentRoute: () => AdminGroupsRoute,
} as any)
const AdminShowsIndexRoute = AdminShowsIndexRouteImport.update({
id: '/',
path: '/',
@@ -133,7 +176,10 @@ export interface FileRoutesByFullPath {
'/register': typeof RegisterRoute
'/settings': typeof SettingsRoute
'/admin/channels': typeof AdminChannelsRouteWithChildren
'/admin/collections': typeof AdminCollectionsRouteWithChildren
'/admin/gallery': typeof AdminGalleryRoute
'/admin/genres': typeof AdminGenresRoute
'/admin/groups': typeof AdminGroupsRouteWithChildren
'/admin/maintenance': typeof AdminMaintenanceRoute
'/admin/media': typeof AdminMediaRoute
'/admin/roles': typeof AdminRolesRoute
@@ -142,8 +188,12 @@ export interface FileRoutesByFullPath {
'/admin/users': typeof AdminUsersRoute
'/admin/': typeof AdminIndexRoute
'/admin/channels/$channelId': typeof AdminChannelsChannelIdRoute
'/admin/collections/$collectionId': typeof AdminCollectionsCollectionIdRoute
'/admin/groups/$groupId': typeof AdminGroupsGroupIdRoute
'/admin/shows/$showId': typeof AdminShowsShowIdRoute
'/admin/channels/': typeof AdminChannelsIndexRoute
'/admin/collections/': typeof AdminCollectionsIndexRoute
'/admin/groups/': typeof AdminGroupsIndexRoute
'/admin/shows/': typeof AdminShowsIndexRoute
}
export interface FileRoutesByTo {
@@ -153,6 +203,7 @@ export interface FileRoutesByTo {
'/register': typeof RegisterRoute
'/settings': typeof SettingsRoute
'/admin/gallery': typeof AdminGalleryRoute
'/admin/genres': typeof AdminGenresRoute
'/admin/maintenance': typeof AdminMaintenanceRoute
'/admin/media': typeof AdminMediaRoute
'/admin/roles': typeof AdminRolesRoute
@@ -160,8 +211,12 @@ export interface FileRoutesByTo {
'/admin/users': typeof AdminUsersRoute
'/admin': typeof AdminIndexRoute
'/admin/channels/$channelId': typeof AdminChannelsChannelIdRoute
'/admin/collections/$collectionId': typeof AdminCollectionsCollectionIdRoute
'/admin/groups/$groupId': typeof AdminGroupsGroupIdRoute
'/admin/shows/$showId': typeof AdminShowsShowIdRoute
'/admin/channels': typeof AdminChannelsIndexRoute
'/admin/collections': typeof AdminCollectionsIndexRoute
'/admin/groups': typeof AdminGroupsIndexRoute
'/admin/shows': typeof AdminShowsIndexRoute
}
export interface FileRoutesById {
@@ -173,7 +228,10 @@ export interface FileRoutesById {
'/register': typeof RegisterRoute
'/settings': typeof SettingsRoute
'/admin/channels': typeof AdminChannelsRouteWithChildren
'/admin/collections': typeof AdminCollectionsRouteWithChildren
'/admin/gallery': typeof AdminGalleryRoute
'/admin/genres': typeof AdminGenresRoute
'/admin/groups': typeof AdminGroupsRouteWithChildren
'/admin/maintenance': typeof AdminMaintenanceRoute
'/admin/media': typeof AdminMediaRoute
'/admin/roles': typeof AdminRolesRoute
@@ -182,8 +240,12 @@ export interface FileRoutesById {
'/admin/users': typeof AdminUsersRoute
'/admin/': typeof AdminIndexRoute
'/admin/channels/$channelId': typeof AdminChannelsChannelIdRoute
'/admin/collections/$collectionId': typeof AdminCollectionsCollectionIdRoute
'/admin/groups/$groupId': typeof AdminGroupsGroupIdRoute
'/admin/shows/$showId': typeof AdminShowsShowIdRoute
'/admin/channels/': typeof AdminChannelsIndexRoute
'/admin/collections/': typeof AdminCollectionsIndexRoute
'/admin/groups/': typeof AdminGroupsIndexRoute
'/admin/shows/': typeof AdminShowsIndexRoute
}
export interface FileRouteTypes {
@@ -196,7 +258,10 @@ export interface FileRouteTypes {
| '/register'
| '/settings'
| '/admin/channels'
| '/admin/collections'
| '/admin/gallery'
| '/admin/genres'
| '/admin/groups'
| '/admin/maintenance'
| '/admin/media'
| '/admin/roles'
@@ -205,8 +270,12 @@ export interface FileRouteTypes {
| '/admin/users'
| '/admin/'
| '/admin/channels/$channelId'
| '/admin/collections/$collectionId'
| '/admin/groups/$groupId'
| '/admin/shows/$showId'
| '/admin/channels/'
| '/admin/collections/'
| '/admin/groups/'
| '/admin/shows/'
fileRoutesByTo: FileRoutesByTo
to:
@@ -216,6 +285,7 @@ export interface FileRouteTypes {
| '/register'
| '/settings'
| '/admin/gallery'
| '/admin/genres'
| '/admin/maintenance'
| '/admin/media'
| '/admin/roles'
@@ -223,8 +293,12 @@ export interface FileRouteTypes {
| '/admin/users'
| '/admin'
| '/admin/channels/$channelId'
| '/admin/collections/$collectionId'
| '/admin/groups/$groupId'
| '/admin/shows/$showId'
| '/admin/channels'
| '/admin/collections'
| '/admin/groups'
| '/admin/shows'
id:
| '__root__'
@@ -235,7 +309,10 @@ export interface FileRouteTypes {
| '/register'
| '/settings'
| '/admin/channels'
| '/admin/collections'
| '/admin/gallery'
| '/admin/genres'
| '/admin/groups'
| '/admin/maintenance'
| '/admin/media'
| '/admin/roles'
@@ -244,8 +321,12 @@ export interface FileRouteTypes {
| '/admin/users'
| '/admin/'
| '/admin/channels/$channelId'
| '/admin/collections/$collectionId'
| '/admin/groups/$groupId'
| '/admin/shows/$showId'
| '/admin/channels/'
| '/admin/collections/'
| '/admin/groups/'
| '/admin/shows/'
fileRoutesById: FileRoutesById
}
@@ -316,6 +397,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AdminChannelsRouteImport
parentRoute: typeof AdminRoute
}
'/admin/collections': {
id: '/admin/collections'
path: '/collections'
fullPath: '/admin/collections'
preLoaderRoute: typeof AdminCollectionsRouteImport
parentRoute: typeof AdminRoute
}
'/admin/gallery': {
id: '/admin/gallery'
path: '/gallery'
@@ -323,6 +411,20 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AdminGalleryRouteImport
parentRoute: typeof AdminRoute
}
'/admin/genres': {
id: '/admin/genres'
path: '/genres'
fullPath: '/admin/genres'
preLoaderRoute: typeof AdminGenresRouteImport
parentRoute: typeof AdminRoute
}
'/admin/groups': {
id: '/admin/groups'
path: '/groups'
fullPath: '/admin/groups'
preLoaderRoute: typeof AdminGroupsRouteImport
parentRoute: typeof AdminRoute
}
'/admin/maintenance': {
id: '/admin/maintenance'
path: '/maintenance'
@@ -379,6 +481,34 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AdminChannelsChannelIdRouteImport
parentRoute: typeof AdminChannelsRoute
}
'/admin/collections/': {
id: '/admin/collections/'
path: '/'
fullPath: '/admin/collections/'
preLoaderRoute: typeof AdminCollectionsIndexRouteImport
parentRoute: typeof AdminCollectionsRoute
}
'/admin/collections/$collectionId': {
id: '/admin/collections/$collectionId'
path: '/$collectionId'
fullPath: '/admin/collections/$collectionId'
preLoaderRoute: typeof AdminCollectionsCollectionIdRouteImport
parentRoute: typeof AdminCollectionsRoute
}
'/admin/groups/': {
id: '/admin/groups/'
path: '/'
fullPath: '/admin/groups/'
preLoaderRoute: typeof AdminGroupsIndexRouteImport
parentRoute: typeof AdminGroupsRoute
}
'/admin/groups/$groupId': {
id: '/admin/groups/$groupId'
path: '/$groupId'
fullPath: '/admin/groups/$groupId'
preLoaderRoute: typeof AdminGroupsGroupIdRouteImport
parentRoute: typeof AdminGroupsRoute
}
'/admin/shows/': {
id: '/admin/shows/'
path: '/'
@@ -410,6 +540,33 @@ const AdminChannelsRouteWithChildren = AdminChannelsRoute._addFileChildren(
AdminChannelsRouteChildren,
)
interface AdminCollectionsRouteChildren {
AdminCollectionsCollectionIdRoute: typeof AdminCollectionsCollectionIdRoute
AdminCollectionsIndexRoute: typeof AdminCollectionsIndexRoute
}
const AdminCollectionsRouteChildren: AdminCollectionsRouteChildren = {
AdminCollectionsCollectionIdRoute: AdminCollectionsCollectionIdRoute,
AdminCollectionsIndexRoute: AdminCollectionsIndexRoute,
}
const AdminCollectionsRouteWithChildren =
AdminCollectionsRoute._addFileChildren(AdminCollectionsRouteChildren)
interface AdminGroupsRouteChildren {
AdminGroupsGroupIdRoute: typeof AdminGroupsGroupIdRoute
AdminGroupsIndexRoute: typeof AdminGroupsIndexRoute
}
const AdminGroupsRouteChildren: AdminGroupsRouteChildren = {
AdminGroupsGroupIdRoute: AdminGroupsGroupIdRoute,
AdminGroupsIndexRoute: AdminGroupsIndexRoute,
}
const AdminGroupsRouteWithChildren = AdminGroupsRoute._addFileChildren(
AdminGroupsRouteChildren,
)
interface AdminShowsRouteChildren {
AdminShowsShowIdRoute: typeof AdminShowsShowIdRoute
AdminShowsIndexRoute: typeof AdminShowsIndexRoute
@@ -426,7 +583,10 @@ const AdminShowsRouteWithChildren = AdminShowsRoute._addFileChildren(
interface AdminRouteChildren {
AdminChannelsRoute: typeof AdminChannelsRouteWithChildren
AdminCollectionsRoute: typeof AdminCollectionsRouteWithChildren
AdminGalleryRoute: typeof AdminGalleryRoute
AdminGenresRoute: typeof AdminGenresRoute
AdminGroupsRoute: typeof AdminGroupsRouteWithChildren
AdminMaintenanceRoute: typeof AdminMaintenanceRoute
AdminMediaRoute: typeof AdminMediaRoute
AdminRolesRoute: typeof AdminRolesRoute
@@ -438,7 +598,10 @@ interface AdminRouteChildren {
const AdminRouteChildren: AdminRouteChildren = {
AdminChannelsRoute: AdminChannelsRouteWithChildren,
AdminCollectionsRoute: AdminCollectionsRouteWithChildren,
AdminGalleryRoute: AdminGalleryRoute,
AdminGenresRoute: AdminGenresRoute,
AdminGroupsRoute: AdminGroupsRouteWithChildren,
AdminMaintenanceRoute: AdminMaintenanceRoute,
AdminMediaRoute: AdminMediaRoute,
AdminRolesRoute: AdminRolesRoute,