Files
sofa/packages/db/drizzle/20260324003410_clever_gertrude_yorkes/snapshot.json
T
4fc6b2f8d1 feat: add filtering and sorting across library, explore, and upcoming (#21)
* 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>
2026-03-24 09:07:14 -04:00

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": []
}