mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
* feat: add filtering and sorting across library, explore, and upcoming Add comprehensive filtering and sorting to all list views on both web and mobile. Library (new dedicated page): - New /library route (web) with URL search param persistence - New Library tab (5th tab, mobile) with FlashList grid - Filters: status (multi-select), type, genre (library-only), user rating range, release year (decade presets + custom), content rating, available to stream - Sort by: title, date added, release date, popularity, user rating, TMDB rating - Text search within collection - Filter popover (web) / bottom sheet with Apply (mobile) - Remove old dashboard.library endpoint in favor of library.list Explore/Discover: - New Discover section on Explore page with inline filter controls - TMDB filters: genre (now optional), year range, min rating, sort order, original language, streaming provider - Watch provider list endpoint (WATCH_REGION env var, default "US") - Default to popular content when no filters selected Upcoming: - Type filter (All/Movies/TV Shows) and status filter (All/Watching/Watchlist) - Toggle chips on both web (URL params) and mobile - Backend: mediaType and statusFilter params on upcoming endpoint Navigation: - Library added to web nav bar (desktop + mobile tab bar) - Library added as 5th tab on mobile (between Home and Explore) - Dashboard library section simplified to compact preview with "See all" link Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add user streaming platform subscriptions and redesign filter UI Replace the denormalized availabilityOffers table with a normalized platforms + titleAvailability + userPlatforms schema. Users can now declare which streaming services they subscribe to, enabling personalized "On your services" availability display and filtered library/explore results. Backend: new platforms table seeded from TMDB provider data on startup, new API endpoints (platforms.list, account.platforms, account.updatePlatforms), title detail annotates availability with isUserSubscribed flag, library "on my services" filter checks user's subscribed platforms. Web UI: post-registration onboarding page for platform selection, streaming services settings section, title detail split into "On your services" / "Also available on", explore dropdown uses platforms table with active filter highlighting. Library filters redesigned from cluttered popover to clean collapsible inline strip with consolidated dropdowns. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: address race conditions, stale state, and edge cases in platforms feature - Fix debounced autosave race in streaming services settings: use ref for latest selection + counter guard so only the most recent save updates UI. Clean up timers on unmount. - Fix explore provider dropdown desyncing from query filter when switching Movie/TV type: reset selectedPlatformId alongside providerId. - Fix platformIdsExist rejecting duplicate valid IDs by deduplicating input before comparing against DB results. - Fix stale platform metadata: always upsert name/logo on TMDB refresh instead of skipping when platform already exists. - Fix invisible ratingMax filter: clear ratingMax when user changes ratingMin since the UI only exposes a single rating dropdown now. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: clear stale saved-state timer and preserve falsy filter values - Clear previous savedTimerRef timeout before scheduling a new one in streaming-services-section, preventing an older timer from hiding the "Saved" indicator too early on rapid successive saves - Replace `value || undefined` with explicit empty-value check in library filter handler so numeric 0 (e.g. ratingMin=0) is not incorrectly dropped Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add TanStack Form and migrate auth + change password forms Set up TanStack Form v1 composition layer with createFormHook, pre-bound field components (TextField, TextareaField, CheckboxField, SwitchField, SubmitButton), and migrate the two traditional submit-based forms: - AuthForm: replace 4 useState calls with useAppForm, use form.Field for each input while preserving motion animation layout - ChangePasswordDialog: replace 6 useState calls with useAppForm + Zod schema validation (cross-field password match, min length), per-field error display, form.reset() on dialog close Also adds @tanstack/react-form to the monorepo catalog and updates both web and native apps to reference it via catalog:. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3377 lines
72 KiB
JSON
3377 lines
72 KiB
JSON
{
|
|
"version": "7",
|
|
"dialect": "sqlite",
|
|
"id": "09684273-fbee-43c5-ac9c-95a0882e6302",
|
|
"prevIds": [
|
|
"4910a1f0-24c2-4ca0-a53c-0e68efafa027"
|
|
],
|
|
"ddl": [
|
|
{
|
|
"name": "account",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "appSettings",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "cronRuns",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "episodes",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "genres",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "importJobs",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "integrationEvents",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "integrations",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "personFilmography",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "persons",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "platforms",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "seasons",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "session",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "titleAvailability",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "titleCast",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "titleGenres",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "titleRecommendations",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "titles",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "user",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "userEpisodeWatches",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "userMovieWatches",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "userPlatforms",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "userRatings",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "userTitleStatus",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"name": "verification",
|
|
"entityType": "tables"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "accountId",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "providerId",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "accessToken",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "refreshToken",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "idToken",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "accessTokenExpiresAt",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "refreshTokenExpiresAt",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "scope",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "password",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "updatedAt",
|
|
"entityType": "columns",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "key",
|
|
"entityType": "columns",
|
|
"table": "appSettings"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "value",
|
|
"entityType": "columns",
|
|
"table": "appSettings"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "jobName",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "status",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "startedAt",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "finishedAt",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "durationMs",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "errorMessage",
|
|
"entityType": "columns",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "seasonId",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "episodeNumber",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "overview",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "stillPath",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "stillThumbHash",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "airDate",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "runtimeMinutes",
|
|
"entityType": "columns",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "genres"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "genres"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "source",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "status",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "payload",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "importWatches",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "importWatchlist",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "importRatings",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "totalItems",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "processedItems",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "importedCount",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "skippedCount",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "failedCount",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "currentMessage",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "errors",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "warnings",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "startedAt",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "finishedAt",
|
|
"entityType": "columns",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "integrationId",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "eventType",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "mediaType",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "mediaTitle",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "status",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "errorMessage",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "receivedAt",
|
|
"entityType": "columns",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "provider",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "type",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "token",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "true",
|
|
"generated": null,
|
|
"name": "enabled",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastEventAt",
|
|
"entityType": "columns",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "personId",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "character",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "'Acting'",
|
|
"generated": null,
|
|
"name": "department",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "job",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "displayOrder",
|
|
"entityType": "columns",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "tmdbId",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "biography",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "birthday",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "deathday",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "placeOfBirth",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "profilePath",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "profileThumbHash",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "knownForDepartment",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "real",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "popularity",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "imdbId",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "filmographyLastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "tmdbProviderId",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "logoPath",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "urlTemplate",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "displayOrder",
|
|
"entityType": "columns",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "seasonNumber",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "overview",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "posterPath",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "posterThumbHash",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "airDate",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "token",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "expiresAt",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "ipAddress",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userAgent",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "impersonatedBy",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "updatedAt",
|
|
"entityType": "columns",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "platformId",
|
|
"entityType": "columns",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "offerType",
|
|
"entityType": "columns",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "'US'",
|
|
"generated": null,
|
|
"name": "region",
|
|
"entityType": "columns",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "personId",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "character",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "'Acting'",
|
|
"generated": null,
|
|
"name": "department",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "job",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "0",
|
|
"generated": null,
|
|
"name": "displayOrder",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "episodeCount",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "genreId",
|
|
"entityType": "columns",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "recommendedTitleId",
|
|
"entityType": "columns",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "source",
|
|
"entityType": "columns",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "rank",
|
|
"entityType": "columns",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "tmdbId",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "tvdbId",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "type",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "title",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "originalTitle",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "overview",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "releaseDate",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "firstAirDate",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "posterPath",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "posterThumbHash",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "backdropPath",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "backdropThumbHash",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "real",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "popularity",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "real",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "voteAverage",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "voteCount",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "status",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "contentRating",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "imdbId",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "originalLanguage",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "runtimeMinutes",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "colorPalette",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "trailerVideoKey",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "lastFetchedAt",
|
|
"entityType": "columns",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "name",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "email",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "false",
|
|
"generated": null,
|
|
"name": "emailVerified",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "image",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": "'user'",
|
|
"generated": null,
|
|
"name": "role",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": "false",
|
|
"generated": null,
|
|
"name": "banned",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "banReason",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "banExpires",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "updatedAt",
|
|
"entityType": "columns",
|
|
"table": "user"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "episodeId",
|
|
"entityType": "columns",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "watchedAt",
|
|
"entityType": "columns",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "'manual'",
|
|
"generated": null,
|
|
"name": "source",
|
|
"entityType": "columns",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "watchedAt",
|
|
"entityType": "columns",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": "'manual'",
|
|
"generated": null,
|
|
"name": "source",
|
|
"entityType": "columns",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "platformId",
|
|
"entityType": "columns",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "ratingStars",
|
|
"entityType": "columns",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "ratedAt",
|
|
"entityType": "columns",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "userId",
|
|
"entityType": "columns",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "titleId",
|
|
"entityType": "columns",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "status",
|
|
"entityType": "columns",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "addedAt",
|
|
"entityType": "columns",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "updatedAt",
|
|
"entityType": "columns",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "id",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "identifier",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "value",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": true,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "expiresAt",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "createdAt",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"notNull": false,
|
|
"autoincrement": false,
|
|
"default": null,
|
|
"generated": null,
|
|
"name": "updatedAt",
|
|
"entityType": "columns",
|
|
"table": "verification"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_account_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "account"
|
|
},
|
|
{
|
|
"columns": [
|
|
"seasonId"
|
|
],
|
|
"tableTo": "seasons",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_episodes_seasonId_seasons_id_fk",
|
|
"entityType": "fks",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_importJobs_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"columns": [
|
|
"integrationId"
|
|
],
|
|
"tableTo": "integrations",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_integrationEvents_integrationId_integrations_id_fk",
|
|
"entityType": "fks",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_integrations_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"columns": [
|
|
"personId"
|
|
],
|
|
"tableTo": "persons",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_personFilmography_personId_persons_id_fk",
|
|
"entityType": "fks",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_personFilmography_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_seasons_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_session_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleAvailability_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"columns": [
|
|
"platformId"
|
|
],
|
|
"tableTo": "platforms",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleAvailability_platformId_platforms_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleCast_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"columns": [
|
|
"personId"
|
|
],
|
|
"tableTo": "persons",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleCast_personId_persons_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleGenres_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"columns": [
|
|
"genreId"
|
|
],
|
|
"tableTo": "genres",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleGenres_genreId_genres_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleRecommendations_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"columns": [
|
|
"recommendedTitleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_titleRecommendations_recommendedTitleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userEpisodeWatches_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
"episodeId"
|
|
],
|
|
"tableTo": "episodes",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userEpisodeWatches_episodeId_episodes_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userMovieWatches_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userMovieWatches_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userPlatforms_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
"platformId"
|
|
],
|
|
"tableTo": "platforms",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userPlatforms_platformId_platforms_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userRatings_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userRatings_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"columns": [
|
|
"userId"
|
|
],
|
|
"tableTo": "user",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userTitleStatus_userId_user_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"columns": [
|
|
"titleId"
|
|
],
|
|
"tableTo": "titles",
|
|
"columnsTo": [
|
|
"id"
|
|
],
|
|
"onUpdate": "NO ACTION",
|
|
"onDelete": "CASCADE",
|
|
"nameExplicit": false,
|
|
"name": "fk_userTitleStatus_titleId_titles_id_fk",
|
|
"entityType": "fks",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "account_pk",
|
|
"table": "account",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"key"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "appSettings_pk",
|
|
"table": "appSettings",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "cronRuns_pk",
|
|
"table": "cronRuns",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "episodes_pk",
|
|
"table": "episodes",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "genres_pk",
|
|
"table": "genres",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "importJobs_pk",
|
|
"table": "importJobs",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "integrationEvents_pk",
|
|
"table": "integrationEvents",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "integrations_pk",
|
|
"table": "integrations",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "personFilmography_pk",
|
|
"table": "personFilmography",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "persons_pk",
|
|
"table": "persons",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "platforms_pk",
|
|
"table": "platforms",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "seasons_pk",
|
|
"table": "seasons",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "session_pk",
|
|
"table": "session",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "titleCast_pk",
|
|
"table": "titleCast",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "titles_pk",
|
|
"table": "titles",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "user_pk",
|
|
"table": "user",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "userEpisodeWatches_pk",
|
|
"table": "userEpisodeWatches",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "userMovieWatches_pk",
|
|
"table": "userMovieWatches",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
"id"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "verification_pk",
|
|
"table": "verification",
|
|
"entityType": "pks"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "jobName",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "startedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "cronRuns_jobName_startedAt",
|
|
"entityType": "indexes",
|
|
"table": "cronRuns"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "seasonId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "episodeNumber",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "episodes_seasonId_episodeNumber",
|
|
"entityType": "indexes",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "airDate",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "episodes_airDate",
|
|
"entityType": "indexes",
|
|
"table": "episodes"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "createdAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "importJobs_userId_createdAt",
|
|
"entityType": "indexes",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "status",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "importJobs_status",
|
|
"entityType": "indexes",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": "\"importJobs\".\"status\" in ('pending', 'running')",
|
|
"origin": "manual",
|
|
"name": "importJobs_active_user",
|
|
"entityType": "indexes",
|
|
"table": "importJobs"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "integrationId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "receivedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "integrationEvents_integrationId_receivedAt",
|
|
"entityType": "indexes",
|
|
"table": "integrationEvents"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "provider",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "integrations_userId_provider",
|
|
"entityType": "indexes",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "token",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "integrations_token",
|
|
"entityType": "indexes",
|
|
"table": "integrations"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "personId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "displayOrder",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "personFilmography_personId_displayOrder",
|
|
"entityType": "indexes",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "personFilmography_titleId",
|
|
"entityType": "indexes",
|
|
"table": "personFilmography"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "tmdbId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "persons_tmdbId_unique",
|
|
"entityType": "indexes",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "name",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "persons_name",
|
|
"entityType": "indexes",
|
|
"table": "persons"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "tmdbProviderId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "platforms_tmdbProviderId_unique",
|
|
"entityType": "indexes",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "displayOrder",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "platforms_displayOrder",
|
|
"entityType": "indexes",
|
|
"table": "platforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "seasonNumber",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "seasons_titleId_seasonNumber",
|
|
"entityType": "indexes",
|
|
"table": "seasons"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "platformId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "offerType",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "region",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleAvailability_unique",
|
|
"entityType": "indexes",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleAvailability_titleId",
|
|
"entityType": "indexes",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "platformId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleAvailability_platformId",
|
|
"entityType": "indexes",
|
|
"table": "titleAvailability"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "personId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "department",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "character",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleCast_unique",
|
|
"entityType": "indexes",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "displayOrder",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleCast_titleId_displayOrder",
|
|
"entityType": "indexes",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "personId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleCast_personId",
|
|
"entityType": "indexes",
|
|
"table": "titleCast"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "genreId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleGenres_titleId_genreId",
|
|
"entityType": "indexes",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "genreId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleGenres_genreId",
|
|
"entityType": "indexes",
|
|
"table": "titleGenres"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "recommendedTitleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "source",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleRecommendations_unique",
|
|
"entityType": "indexes",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "rank",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titleRecommendations_titleId_rank",
|
|
"entityType": "indexes",
|
|
"table": "titleRecommendations"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "tmdbId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "type",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titles_tmdbId_type_unique",
|
|
"entityType": "indexes",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "type",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "releaseDate",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titles_type_releaseDate",
|
|
"entityType": "indexes",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "type",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "firstAirDate",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titles_type_firstAirDate",
|
|
"entityType": "indexes",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "lastFetchedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titles_lastFetchedAt",
|
|
"entityType": "indexes",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "type",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "status",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "lastFetchedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "titles_type_status_lastFetchedAt",
|
|
"entityType": "indexes",
|
|
"table": "titles"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "watchedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userEpisodeWatches_userId_watchedAt",
|
|
"entityType": "indexes",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "episodeId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userEpisodeWatches_episodeId",
|
|
"entityType": "indexes",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "episodeId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userEpisodeWatches_userId_episodeId",
|
|
"entityType": "indexes",
|
|
"table": "userEpisodeWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "watchedAt",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userMovieWatches_userId_watchedAt",
|
|
"entityType": "indexes",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userMovieWatches_titleId",
|
|
"entityType": "indexes",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userMovieWatches_userId_titleId",
|
|
"entityType": "indexes",
|
|
"table": "userMovieWatches"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "platformId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userPlatforms_userId_platformId",
|
|
"entityType": "indexes",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userPlatforms_userId",
|
|
"entityType": "indexes",
|
|
"table": "userPlatforms"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userRatings_userId_titleId",
|
|
"entityType": "indexes",
|
|
"table": "userRatings"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "titleId",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": true,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userTitleStatus_userId_titleId",
|
|
"entityType": "indexes",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"columns": [
|
|
{
|
|
"value": "userId",
|
|
"isExpression": false
|
|
},
|
|
{
|
|
"value": "status",
|
|
"isExpression": false
|
|
}
|
|
],
|
|
"isUnique": false,
|
|
"where": null,
|
|
"origin": "manual",
|
|
"name": "userTitleStatus_userId_status",
|
|
"entityType": "indexes",
|
|
"table": "userTitleStatus"
|
|
},
|
|
{
|
|
"columns": [
|
|
"token"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "session_token_unique",
|
|
"entityType": "uniques",
|
|
"table": "session"
|
|
},
|
|
{
|
|
"columns": [
|
|
"email"
|
|
],
|
|
"nameExplicit": false,
|
|
"name": "user_email_unique",
|
|
"entityType": "uniques",
|
|
"table": "user"
|
|
}
|
|
],
|
|
"renames": []
|
|
} |