Files
Tracearr/apps/server/src/db/migrations/meta/0017_snapshot.json
Rephl3x 3015f48118
Some checks failed
CI / Lint & Typecheck (push) Has been cancelled
CI / Test (routes) (push) Has been cancelled
CI / Test (security) (push) Has been cancelled
CI / Test (services) (push) Has been cancelled
CI / Test (unit) (push) Has been cancelled
CI / Test (integration) (push) Has been cancelled
CI / Test Coverage (push) Has been cancelled
CI / Build (push) Has been cancelled
Initial Upload
2025-12-17 12:32:50 +13:00

2199 lines
58 KiB
JSON

{
"id": "60ebf6cd-93a8-469f-a2a4-5219bca7a982",
"prevId": "557d36e4-13aa-427e-8450-1da83382a0fe",
"version": "7",
"dialect": "postgresql",
"tables": {
"public.mobile_sessions": {
"name": "mobile_sessions",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"user_id": {
"name": "user_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"refresh_token_hash": {
"name": "refresh_token_hash",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true
},
"device_name": {
"name": "device_name",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true
},
"device_id": {
"name": "device_id",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true
},
"platform": {
"name": "platform",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"expo_push_token": {
"name": "expo_push_token",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"device_secret": {
"name": "device_secret",
"type": "varchar(64)",
"primaryKey": false,
"notNull": false
},
"last_seen_at": {
"name": "last_seen_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"mobile_sessions_user_idx": {
"name": "mobile_sessions_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"mobile_sessions_device_id_idx": {
"name": "mobile_sessions_device_id_idx",
"columns": [
{
"expression": "device_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"mobile_sessions_refresh_token_idx": {
"name": "mobile_sessions_refresh_token_idx",
"columns": [
{
"expression": "refresh_token_hash",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"mobile_sessions_expo_push_token_idx": {
"name": "mobile_sessions_expo_push_token_idx",
"columns": [
{
"expression": "expo_push_token",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"mobile_sessions_user_id_users_id_fk": {
"name": "mobile_sessions_user_id_users_id_fk",
"tableFrom": "mobile_sessions",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {
"mobile_sessions_refresh_token_hash_unique": {
"name": "mobile_sessions_refresh_token_hash_unique",
"nullsNotDistinct": false,
"columns": [
"refresh_token_hash"
]
}
},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.mobile_tokens": {
"name": "mobile_tokens",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"token_hash": {
"name": "token_hash",
"type": "varchar(64)",
"primaryKey": false,
"notNull": true
},
"expires_at": {
"name": "expires_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"created_by": {
"name": "created_by",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"used_at": {
"name": "used_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": false
}
},
"indexes": {},
"foreignKeys": {
"mobile_tokens_created_by_users_id_fk": {
"name": "mobile_tokens_created_by_users_id_fk",
"tableFrom": "mobile_tokens",
"tableTo": "users",
"columnsFrom": [
"created_by"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {
"mobile_tokens_token_hash_unique": {
"name": "mobile_tokens_token_hash_unique",
"nullsNotDistinct": false,
"columns": [
"token_hash"
]
}
},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.notification_channel_routing": {
"name": "notification_channel_routing",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"event_type": {
"name": "event_type",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true
},
"discord_enabled": {
"name": "discord_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"webhook_enabled": {
"name": "webhook_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"push_enabled": {
"name": "push_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"notification_channel_routing_event_type_idx": {
"name": "notification_channel_routing_event_type_idx",
"columns": [
{
"expression": "event_type",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {
"notification_channel_routing_event_type_unique": {
"name": "notification_channel_routing_event_type_unique",
"nullsNotDistinct": false,
"columns": [
"event_type"
]
}
},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.notification_preferences": {
"name": "notification_preferences",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"mobile_session_id": {
"name": "mobile_session_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"push_enabled": {
"name": "push_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"on_violation_detected": {
"name": "on_violation_detected",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"on_stream_started": {
"name": "on_stream_started",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"on_stream_stopped": {
"name": "on_stream_stopped",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"on_concurrent_streams": {
"name": "on_concurrent_streams",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"on_new_device": {
"name": "on_new_device",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"on_trust_score_changed": {
"name": "on_trust_score_changed",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"on_server_down": {
"name": "on_server_down",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"on_server_up": {
"name": "on_server_up",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"violation_min_severity": {
"name": "violation_min_severity",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 1
},
"violation_rule_types": {
"name": "violation_rule_types",
"type": "text[]",
"primaryKey": false,
"notNull": false,
"default": "'{}'"
},
"max_per_minute": {
"name": "max_per_minute",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 10
},
"max_per_hour": {
"name": "max_per_hour",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 60
},
"quiet_hours_enabled": {
"name": "quiet_hours_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"quiet_hours_start": {
"name": "quiet_hours_start",
"type": "varchar(5)",
"primaryKey": false,
"notNull": false
},
"quiet_hours_end": {
"name": "quiet_hours_end",
"type": "varchar(5)",
"primaryKey": false,
"notNull": false
},
"quiet_hours_timezone": {
"name": "quiet_hours_timezone",
"type": "varchar(50)",
"primaryKey": false,
"notNull": false,
"default": "'UTC'"
},
"quiet_hours_override_critical": {
"name": "quiet_hours_override_critical",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"notification_prefs_mobile_session_idx": {
"name": "notification_prefs_mobile_session_idx",
"columns": [
{
"expression": "mobile_session_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"notification_preferences_mobile_session_id_mobile_sessions_id_fk": {
"name": "notification_preferences_mobile_session_id_mobile_sessions_id_fk",
"tableFrom": "notification_preferences",
"tableTo": "mobile_sessions",
"columnsFrom": [
"mobile_session_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {
"notification_preferences_mobile_session_id_unique": {
"name": "notification_preferences_mobile_session_id_unique",
"nullsNotDistinct": false,
"columns": [
"mobile_session_id"
]
}
},
"policies": {},
"checkConstraints": {
"quiet_hours_start_format": {
"name": "quiet_hours_start_format",
"value": "\"notification_preferences\".\"quiet_hours_start\" IS NULL OR \"notification_preferences\".\"quiet_hours_start\" ~ '^([01][0-9]|2[0-3]):[0-5][0-9]$'"
},
"quiet_hours_end_format": {
"name": "quiet_hours_end_format",
"value": "\"notification_preferences\".\"quiet_hours_end\" IS NULL OR \"notification_preferences\".\"quiet_hours_end\" ~ '^([01][0-9]|2[0-3]):[0-5][0-9]$'"
}
},
"isRLSEnabled": false
},
"public.rules": {
"name": "rules",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"name": {
"name": "name",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true
},
"type": {
"name": "type",
"type": "varchar(50)",
"primaryKey": false,
"notNull": true
},
"params": {
"name": "params",
"type": "jsonb",
"primaryKey": false,
"notNull": true
},
"server_user_id": {
"name": "server_user_id",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"is_active": {
"name": "is_active",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"rules_active_idx": {
"name": "rules_active_idx",
"columns": [
{
"expression": "is_active",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"rules_server_user_id_idx": {
"name": "rules_server_user_id_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"rules_server_user_id_server_users_id_fk": {
"name": "rules_server_user_id_server_users_id_fk",
"tableFrom": "rules",
"tableTo": "server_users",
"columnsFrom": [
"server_user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.server_users": {
"name": "server_users",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"user_id": {
"name": "user_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"server_id": {
"name": "server_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"external_id": {
"name": "external_id",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"username": {
"name": "username",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"thumb_url": {
"name": "thumb_url",
"type": "text",
"primaryKey": false,
"notNull": false
},
"is_server_admin": {
"name": "is_server_admin",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"trust_score": {
"name": "trust_score",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 100
},
"session_count": {
"name": "session_count",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"server_users_user_server_unique": {
"name": "server_users_user_server_unique",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"server_users_server_external_unique": {
"name": "server_users_server_external_unique",
"columns": [
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "external_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"server_users_user_idx": {
"name": "server_users_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"server_users_server_idx": {
"name": "server_users_server_idx",
"columns": [
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"server_users_username_idx": {
"name": "server_users_username_idx",
"columns": [
{
"expression": "username",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"server_users_user_id_users_id_fk": {
"name": "server_users_user_id_users_id_fk",
"tableFrom": "server_users",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"server_users_server_id_servers_id_fk": {
"name": "server_users_server_id_servers_id_fk",
"tableFrom": "server_users",
"tableTo": "servers",
"columnsFrom": [
"server_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.servers": {
"name": "servers",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"name": {
"name": "name",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true
},
"type": {
"name": "type",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"url": {
"name": "url",
"type": "text",
"primaryKey": false,
"notNull": true
},
"token": {
"name": "token",
"type": "text",
"primaryKey": false,
"notNull": true
},
"machine_identifier": {
"name": "machine_identifier",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.sessions": {
"name": "sessions",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"server_id": {
"name": "server_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"server_user_id": {
"name": "server_user_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"session_key": {
"name": "session_key",
"type": "varchar(255)",
"primaryKey": false,
"notNull": true
},
"plex_session_id": {
"name": "plex_session_id",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"state": {
"name": "state",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"media_type": {
"name": "media_type",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"media_title": {
"name": "media_title",
"type": "text",
"primaryKey": false,
"notNull": true
},
"grandparent_title": {
"name": "grandparent_title",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false
},
"season_number": {
"name": "season_number",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"episode_number": {
"name": "episode_number",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"year": {
"name": "year",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"thumb_path": {
"name": "thumb_path",
"type": "varchar(500)",
"primaryKey": false,
"notNull": false
},
"rating_key": {
"name": "rating_key",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"external_session_id": {
"name": "external_session_id",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"started_at": {
"name": "started_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"stopped_at": {
"name": "stopped_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": false
},
"last_seen_at": {
"name": "last_seen_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true
},
"duration_ms": {
"name": "duration_ms",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"total_duration_ms": {
"name": "total_duration_ms",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"progress_ms": {
"name": "progress_ms",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"last_paused_at": {
"name": "last_paused_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": false
},
"paused_duration_ms": {
"name": "paused_duration_ms",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 0
},
"reference_id": {
"name": "reference_id",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"watched": {
"name": "watched",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"force_stopped": {
"name": "force_stopped",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"short_session": {
"name": "short_session",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"ip_address": {
"name": "ip_address",
"type": "varchar(45)",
"primaryKey": false,
"notNull": true
},
"geo_city": {
"name": "geo_city",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"geo_region": {
"name": "geo_region",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"geo_country": {
"name": "geo_country",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false
},
"geo_lat": {
"name": "geo_lat",
"type": "real",
"primaryKey": false,
"notNull": false
},
"geo_lon": {
"name": "geo_lon",
"type": "real",
"primaryKey": false,
"notNull": false
},
"player_name": {
"name": "player_name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"device_id": {
"name": "device_id",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"product": {
"name": "product",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"device": {
"name": "device",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"platform": {
"name": "platform",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false
},
"quality": {
"name": "quality",
"type": "varchar(100)",
"primaryKey": false,
"notNull": false
},
"is_transcode": {
"name": "is_transcode",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"bitrate": {
"name": "bitrate",
"type": "integer",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"sessions_server_user_time_idx": {
"name": "sessions_server_user_time_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "started_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_server_time_idx": {
"name": "sessions_server_time_idx",
"columns": [
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "started_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_state_idx": {
"name": "sessions_state_idx",
"columns": [
{
"expression": "state",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_external_session_idx": {
"name": "sessions_external_session_idx",
"columns": [
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "external_session_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_device_idx": {
"name": "sessions_device_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "device_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_reference_idx": {
"name": "sessions_reference_idx",
"columns": [
{
"expression": "reference_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_server_user_rating_idx": {
"name": "sessions_server_user_rating_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "rating_key",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_dedup_fallback_idx": {
"name": "sessions_dedup_fallback_idx",
"columns": [
{
"expression": "server_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "rating_key",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "started_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_geo_idx": {
"name": "sessions_geo_idx",
"columns": [
{
"expression": "geo_lat",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "geo_lon",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_geo_time_idx": {
"name": "sessions_geo_time_idx",
"columns": [
{
"expression": "started_at",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "geo_lat",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "geo_lon",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_media_type_idx": {
"name": "sessions_media_type_idx",
"columns": [
{
"expression": "media_type",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_transcode_idx": {
"name": "sessions_transcode_idx",
"columns": [
{
"expression": "is_transcode",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_platform_idx": {
"name": "sessions_platform_idx",
"columns": [
{
"expression": "platform",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_top_movies_idx": {
"name": "sessions_top_movies_idx",
"columns": [
{
"expression": "media_type",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "media_title",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "year",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_top_shows_idx": {
"name": "sessions_top_shows_idx",
"columns": [
{
"expression": "media_type",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "grandparent_title",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"sessions_stale_detection_idx": {
"name": "sessions_stale_detection_idx",
"columns": [
{
"expression": "last_seen_at",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "stopped_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"sessions_server_id_servers_id_fk": {
"name": "sessions_server_id_servers_id_fk",
"tableFrom": "sessions",
"tableTo": "servers",
"columnsFrom": [
"server_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"sessions_server_user_id_server_users_id_fk": {
"name": "sessions_server_user_id_server_users_id_fk",
"tableFrom": "sessions",
"tableTo": "server_users",
"columnsFrom": [
"server_user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.settings": {
"name": "settings",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"default": 1
},
"allow_guest_access": {
"name": "allow_guest_access",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"discord_webhook_url": {
"name": "discord_webhook_url",
"type": "text",
"primaryKey": false,
"notNull": false
},
"custom_webhook_url": {
"name": "custom_webhook_url",
"type": "text",
"primaryKey": false,
"notNull": false
},
"webhook_format": {
"name": "webhook_format",
"type": "text",
"primaryKey": false,
"notNull": false
},
"ntfy_topic": {
"name": "ntfy_topic",
"type": "text",
"primaryKey": false,
"notNull": false
},
"poller_enabled": {
"name": "poller_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": true
},
"poller_interval_ms": {
"name": "poller_interval_ms",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 15000
},
"tautulli_url": {
"name": "tautulli_url",
"type": "text",
"primaryKey": false,
"notNull": false
},
"tautulli_api_key": {
"name": "tautulli_api_key",
"type": "text",
"primaryKey": false,
"notNull": false
},
"external_url": {
"name": "external_url",
"type": "text",
"primaryKey": false,
"notNull": false
},
"base_path": {
"name": "base_path",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true,
"default": "''"
},
"trust_proxy": {
"name": "trust_proxy",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"mobile_enabled": {
"name": "mobile_enabled",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"primary_auth_method": {
"name": "primary_auth_method",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true,
"default": "'local'"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.termination_logs": {
"name": "termination_logs",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"session_id": {
"name": "session_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"server_id": {
"name": "server_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"server_user_id": {
"name": "server_user_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"trigger": {
"name": "trigger",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"triggered_by_user_id": {
"name": "triggered_by_user_id",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"rule_id": {
"name": "rule_id",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"violation_id": {
"name": "violation_id",
"type": "uuid",
"primaryKey": false,
"notNull": false
},
"reason": {
"name": "reason",
"type": "text",
"primaryKey": false,
"notNull": false
},
"success": {
"name": "success",
"type": "boolean",
"primaryKey": false,
"notNull": true
},
"error_message": {
"name": "error_message",
"type": "text",
"primaryKey": false,
"notNull": false
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"termination_logs_session_idx": {
"name": "termination_logs_session_idx",
"columns": [
{
"expression": "session_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"termination_logs_server_user_idx": {
"name": "termination_logs_server_user_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"termination_logs_triggered_by_idx": {
"name": "termination_logs_triggered_by_idx",
"columns": [
{
"expression": "triggered_by_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"termination_logs_rule_idx": {
"name": "termination_logs_rule_idx",
"columns": [
{
"expression": "rule_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"termination_logs_created_at_idx": {
"name": "termination_logs_created_at_idx",
"columns": [
{
"expression": "created_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"termination_logs_server_id_servers_id_fk": {
"name": "termination_logs_server_id_servers_id_fk",
"tableFrom": "termination_logs",
"tableTo": "servers",
"columnsFrom": [
"server_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"termination_logs_server_user_id_server_users_id_fk": {
"name": "termination_logs_server_user_id_server_users_id_fk",
"tableFrom": "termination_logs",
"tableTo": "server_users",
"columnsFrom": [
"server_user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"termination_logs_triggered_by_user_id_users_id_fk": {
"name": "termination_logs_triggered_by_user_id_users_id_fk",
"tableFrom": "termination_logs",
"tableTo": "users",
"columnsFrom": [
"triggered_by_user_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
},
"termination_logs_rule_id_rules_id_fk": {
"name": "termination_logs_rule_id_rules_id_fk",
"tableFrom": "termination_logs",
"tableTo": "rules",
"columnsFrom": [
"rule_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
},
"termination_logs_violation_id_violations_id_fk": {
"name": "termination_logs_violation_id_violations_id_fk",
"tableFrom": "termination_logs",
"tableTo": "violations",
"columnsFrom": [
"violation_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.users": {
"name": "users",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"username": {
"name": "username",
"type": "varchar(100)",
"primaryKey": false,
"notNull": true
},
"name": {
"name": "name",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"thumbnail": {
"name": "thumbnail",
"type": "text",
"primaryKey": false,
"notNull": false
},
"email": {
"name": "email",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"password_hash": {
"name": "password_hash",
"type": "text",
"primaryKey": false,
"notNull": false
},
"plex_account_id": {
"name": "plex_account_id",
"type": "varchar(255)",
"primaryKey": false,
"notNull": false
},
"role": {
"name": "role",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true,
"default": "'member'"
},
"aggregate_trust_score": {
"name": "aggregate_trust_score",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 100
},
"total_violations": {
"name": "total_violations",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 0
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"updated_at": {
"name": "updated_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"users_username_idx": {
"name": "users_username_idx",
"columns": [
{
"expression": "username",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"users_email_unique": {
"name": "users_email_unique",
"columns": [
{
"expression": "email",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"users_plex_account_id_idx": {
"name": "users_plex_account_id_idx",
"columns": [
{
"expression": "plex_account_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"users_role_idx": {
"name": "users_role_idx",
"columns": [
{
"expression": "role",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.violations": {
"name": "violations",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "uuid",
"primaryKey": true,
"notNull": true,
"default": "gen_random_uuid()"
},
"rule_id": {
"name": "rule_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"server_user_id": {
"name": "server_user_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"session_id": {
"name": "session_id",
"type": "uuid",
"primaryKey": false,
"notNull": true
},
"severity": {
"name": "severity",
"type": "varchar(20)",
"primaryKey": false,
"notNull": true
},
"data": {
"name": "data",
"type": "jsonb",
"primaryKey": false,
"notNull": true
},
"created_at": {
"name": "created_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"acknowledged_at": {
"name": "acknowledged_at",
"type": "timestamp with time zone",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"violations_server_user_id_idx": {
"name": "violations_server_user_id_idx",
"columns": [
{
"expression": "server_user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"violations_rule_id_idx": {
"name": "violations_rule_id_idx",
"columns": [
{
"expression": "rule_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"violations_created_at_idx": {
"name": "violations_created_at_idx",
"columns": [
{
"expression": "created_at",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"violations_rule_id_rules_id_fk": {
"name": "violations_rule_id_rules_id_fk",
"tableFrom": "violations",
"tableTo": "rules",
"columnsFrom": [
"rule_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"violations_server_user_id_server_users_id_fk": {
"name": "violations_server_user_id_server_users_id_fk",
"tableFrom": "violations",
"tableTo": "server_users",
"columnsFrom": [
"server_user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"violations_session_id_sessions_id_fk": {
"name": "violations_session_id_sessions_id_fk",
"tableFrom": "violations",
"tableTo": "sessions",
"columnsFrom": [
"session_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
}
},
"enums": {},
"schemas": {},
"sequences": {},
"roles": {},
"policies": {},
"views": {},
"_meta": {
"columns": {},
"schemas": {},
"tables": {}
}
}