Files
sexy/packages/backend/src/migrations/meta/0000_snapshot.json
Sebastian Krüger 4102f9990c
All checks were successful
Build and Push Docker Image to Gitea / build-and-push (push) Successful in 4m23s
fix: switch backend to CommonJS, generate Drizzle migrations, add migrate script
- Remove "type": "module" and switch tsconfig to CommonJS/Node resolution
  to fix drizzle-kit ESM/CJS incompatibility
- Strip .js extensions from all backend TypeScript imports
- Fix gamification resolver: combine two .where() calls using and()
- Fix index.ts: wrap top-level awaits in async main(), fix Fastify+yoga
  request handling via handleNodeRequestAndResponse
- Generate initial Drizzle SQL migration (0000_pale_hellion.sql) for all
  15 tables
- Add src/scripts/migrate.ts: programmatic Drizzle migrator for production
- Copy migrations folder into Docker image (Dockerfile.backend)
- Add schema:migrate npm script

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 18:42:58 +01:00

1931 lines
48 KiB
JSON

{
"id": "96a0e6d2-35c5-43d6-a335-f066f56d6b42",
"prevId": "00000000-0000-0000-0000-000000000000",
"version": "7",
"dialect": "postgresql",
"tables": {
"public.articles": {
"name": "articles",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"slug": {
"name": "slug",
"type": "text",
"primaryKey": false,
"notNull": true
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true
},
"excerpt": {
"name": "excerpt",
"type": "text",
"primaryKey": false,
"notNull": false
},
"content": {
"name": "content",
"type": "text",
"primaryKey": false,
"notNull": false
},
"image": {
"name": "image",
"type": "text",
"primaryKey": false,
"notNull": false
},
"tags": {
"name": "tags",
"type": "text[]",
"primaryKey": false,
"notNull": false,
"default": "'{}'"
},
"publish_date": {
"name": "publish_date",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"author": {
"name": "author",
"type": "text",
"primaryKey": false,
"notNull": false
},
"category": {
"name": "category",
"type": "text",
"primaryKey": false,
"notNull": false
},
"featured": {
"name": "featured",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"articles_slug_idx": {
"name": "articles_slug_idx",
"columns": [
{
"expression": "slug",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"articles_publish_date_idx": {
"name": "articles_publish_date_idx",
"columns": [
{
"expression": "publish_date",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"articles_featured_idx": {
"name": "articles_featured_idx",
"columns": [
{
"expression": "featured",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"articles_image_files_id_fk": {
"name": "articles_image_files_id_fk",
"tableFrom": "articles",
"tableTo": "files",
"columnsFrom": [
"image"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
},
"articles_author_users_id_fk": {
"name": "articles_author_users_id_fk",
"tableFrom": "articles",
"tableTo": "users",
"columnsFrom": [
"author"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.comments": {
"name": "comments",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"identity": {
"type": "always",
"name": "comments_id_seq",
"schema": "public",
"increment": "1",
"startWith": "1",
"minValue": "1",
"maxValue": "2147483647",
"cache": "1",
"cycle": false
}
},
"collection": {
"name": "collection",
"type": "text",
"primaryKey": false,
"notNull": true
},
"item_id": {
"name": "item_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"comment": {
"name": "comment",
"type": "text",
"primaryKey": false,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"comments_collection_item_idx": {
"name": "comments_collection_item_idx",
"columns": [
{
"expression": "collection",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "item_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"comments_user_idx": {
"name": "comments_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"comments_user_id_users_id_fk": {
"name": "comments_user_id_users_id_fk",
"tableFrom": "comments",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.files": {
"name": "files",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"filename": {
"name": "filename",
"type": "text",
"primaryKey": false,
"notNull": true
},
"mime_type": {
"name": "mime_type",
"type": "text",
"primaryKey": false,
"notNull": false
},
"filesize": {
"name": "filesize",
"type": "bigint",
"primaryKey": false,
"notNull": false
},
"duration": {
"name": "duration",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"uploaded_by": {
"name": "uploaded_by",
"type": "text",
"primaryKey": false,
"notNull": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"files_uploaded_by_idx": {
"name": "files_uploaded_by_idx",
"columns": [
{
"expression": "uploaded_by",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.achievements": {
"name": "achievements",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"code": {
"name": "code",
"type": "text",
"primaryKey": false,
"notNull": true
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": true
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"icon": {
"name": "icon",
"type": "text",
"primaryKey": false,
"notNull": false
},
"category": {
"name": "category",
"type": "text",
"primaryKey": false,
"notNull": false
},
"required_count": {
"name": "required_count",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 1
},
"points_reward": {
"name": "points_reward",
"type": "integer",
"primaryKey": false,
"notNull": true,
"default": 0
},
"status": {
"name": "status",
"type": "achievement_status",
"typeSchema": "public",
"primaryKey": false,
"notNull": true,
"default": "'published'"
},
"sort": {
"name": "sort",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
}
},
"indexes": {
"achievements_code_idx": {
"name": "achievements_code_idx",
"columns": [
{
"expression": "code",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.user_achievements": {
"name": "user_achievements",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"identity": {
"type": "always",
"name": "user_achievements_id_seq",
"schema": "public",
"increment": "1",
"startWith": "1",
"minValue": "1",
"maxValue": "2147483647",
"cache": "1",
"cycle": false
}
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"achievement_id": {
"name": "achievement_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"progress": {
"name": "progress",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"date_unlocked": {
"name": "date_unlocked",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"user_achievements_user_idx": {
"name": "user_achievements_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"user_achievements_unique_idx": {
"name": "user_achievements_unique_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
},
{
"expression": "achievement_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"user_achievements_user_id_users_id_fk": {
"name": "user_achievements_user_id_users_id_fk",
"tableFrom": "user_achievements",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_achievements_achievement_id_achievements_id_fk": {
"name": "user_achievements_achievement_id_achievements_id_fk",
"tableFrom": "user_achievements",
"tableTo": "achievements",
"columnsFrom": [
"achievement_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.user_points": {
"name": "user_points",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"identity": {
"type": "always",
"name": "user_points_id_seq",
"schema": "public",
"increment": "1",
"startWith": "1",
"minValue": "1",
"maxValue": "2147483647",
"cache": "1",
"cycle": false
}
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"action": {
"name": "action",
"type": "text",
"primaryKey": false,
"notNull": true
},
"points": {
"name": "points",
"type": "integer",
"primaryKey": false,
"notNull": true
},
"recording_id": {
"name": "recording_id",
"type": "text",
"primaryKey": false,
"notNull": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"user_points_user_idx": {
"name": "user_points_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"user_points_date_idx": {
"name": "user_points_date_idx",
"columns": [
{
"expression": "date_created",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"user_points_user_id_users_id_fk": {
"name": "user_points_user_id_users_id_fk",
"tableFrom": "user_points",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_points_recording_id_recordings_id_fk": {
"name": "user_points_recording_id_recordings_id_fk",
"tableFrom": "user_points",
"tableTo": "recordings",
"columnsFrom": [
"recording_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.user_stats": {
"name": "user_stats",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"identity": {
"type": "always",
"name": "user_stats_id_seq",
"schema": "public",
"increment": "1",
"startWith": "1",
"minValue": "1",
"maxValue": "2147483647",
"cache": "1",
"cycle": false
}
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"total_raw_points": {
"name": "total_raw_points",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"total_weighted_points": {
"name": "total_weighted_points",
"type": "real",
"primaryKey": false,
"notNull": false,
"default": 0
},
"recordings_count": {
"name": "recordings_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"playbacks_count": {
"name": "playbacks_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"comments_count": {
"name": "comments_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"achievements_count": {
"name": "achievements_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"last_updated": {
"name": "last_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false,
"default": "now()"
}
},
"indexes": {
"user_stats_user_idx": {
"name": "user_stats_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"user_stats_user_id_users_id_fk": {
"name": "user_stats_user_id_users_id_fk",
"tableFrom": "user_stats",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.user_photos": {
"name": "user_photos",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"primaryKey": true,
"notNull": true,
"identity": {
"type": "always",
"name": "user_photos_id_seq",
"schema": "public",
"increment": "1",
"startWith": "1",
"minValue": "1",
"maxValue": "2147483647",
"cache": "1",
"cycle": false
}
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"file_id": {
"name": "file_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"sort": {
"name": "sort",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
}
},
"indexes": {
"user_photos_user_idx": {
"name": "user_photos_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"user_photos_user_id_users_id_fk": {
"name": "user_photos_user_id_users_id_fk",
"tableFrom": "user_photos",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"user_photos_file_id_files_id_fk": {
"name": "user_photos_file_id_files_id_fk",
"tableFrom": "user_photos",
"tableTo": "files",
"columnsFrom": [
"file_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.users": {
"name": "users",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"email": {
"name": "email",
"type": "text",
"primaryKey": false,
"notNull": true
},
"password_hash": {
"name": "password_hash",
"type": "text",
"primaryKey": false,
"notNull": true
},
"first_name": {
"name": "first_name",
"type": "text",
"primaryKey": false,
"notNull": false
},
"last_name": {
"name": "last_name",
"type": "text",
"primaryKey": false,
"notNull": false
},
"artist_name": {
"name": "artist_name",
"type": "text",
"primaryKey": false,
"notNull": false
},
"slug": {
"name": "slug",
"type": "text",
"primaryKey": false,
"notNull": false
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"tags": {
"name": "tags",
"type": "text[]",
"primaryKey": false,
"notNull": false,
"default": "'{}'"
},
"role": {
"name": "role",
"type": "user_role",
"typeSchema": "public",
"primaryKey": false,
"notNull": true,
"default": "'viewer'"
},
"avatar": {
"name": "avatar",
"type": "text",
"primaryKey": false,
"notNull": false
},
"banner": {
"name": "banner",
"type": "text",
"primaryKey": false,
"notNull": false
},
"email_verified": {
"name": "email_verified",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"default": false
},
"email_verify_token": {
"name": "email_verify_token",
"type": "text",
"primaryKey": false,
"notNull": false
},
"password_reset_token": {
"name": "password_reset_token",
"type": "text",
"primaryKey": false,
"notNull": false
},
"password_reset_expiry": {
"name": "password_reset_expiry",
"type": "timestamp",
"primaryKey": false,
"notNull": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"users_email_idx": {
"name": "users_email_idx",
"columns": [
{
"expression": "email",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"users_slug_idx": {
"name": "users_slug_idx",
"columns": [
{
"expression": "slug",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"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": {
"users_avatar_files_id_fk": {
"name": "users_avatar_files_id_fk",
"tableFrom": "users",
"tableTo": "files",
"columnsFrom": [
"avatar"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
},
"users_banner_files_id_fk": {
"name": "users_banner_files_id_fk",
"tableFrom": "users",
"tableTo": "files",
"columnsFrom": [
"banner"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.video_likes": {
"name": "video_likes",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"video_id": {
"name": "video_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
}
},
"indexes": {
"video_likes_video_idx": {
"name": "video_likes_video_idx",
"columns": [
{
"expression": "video_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"video_likes_user_idx": {
"name": "video_likes_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"video_likes_video_id_videos_id_fk": {
"name": "video_likes_video_id_videos_id_fk",
"tableFrom": "video_likes",
"tableTo": "videos",
"columnsFrom": [
"video_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"video_likes_user_id_users_id_fk": {
"name": "video_likes_user_id_users_id_fk",
"tableFrom": "video_likes",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.video_models": {
"name": "video_models",
"schema": "",
"columns": {
"video_id": {
"name": "video_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
}
},
"indexes": {},
"foreignKeys": {
"video_models_video_id_videos_id_fk": {
"name": "video_models_video_id_videos_id_fk",
"tableFrom": "video_models",
"tableTo": "videos",
"columnsFrom": [
"video_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"video_models_user_id_users_id_fk": {
"name": "video_models_user_id_users_id_fk",
"tableFrom": "video_models",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"video_models_video_id_user_id_pk": {
"name": "video_models_video_id_user_id_pk",
"columns": [
"video_id",
"user_id"
]
}
},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.video_plays": {
"name": "video_plays",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"video_id": {
"name": "video_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": false
},
"session_id": {
"name": "session_id",
"type": "text",
"primaryKey": false,
"notNull": false
},
"duration_watched": {
"name": "duration_watched",
"type": "integer",
"primaryKey": false,
"notNull": false
},
"completed": {
"name": "completed",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"video_plays_video_idx": {
"name": "video_plays_video_idx",
"columns": [
{
"expression": "video_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"video_plays_user_idx": {
"name": "video_plays_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"video_plays_date_idx": {
"name": "video_plays_date_idx",
"columns": [
{
"expression": "date_created",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"video_plays_video_id_videos_id_fk": {
"name": "video_plays_video_id_videos_id_fk",
"tableFrom": "video_plays",
"tableTo": "videos",
"columnsFrom": [
"video_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"video_plays_user_id_users_id_fk": {
"name": "video_plays_user_id_users_id_fk",
"tableFrom": "video_plays",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.videos": {
"name": "videos",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"slug": {
"name": "slug",
"type": "text",
"primaryKey": false,
"notNull": true
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"image": {
"name": "image",
"type": "text",
"primaryKey": false,
"notNull": false
},
"movie": {
"name": "movie",
"type": "text",
"primaryKey": false,
"notNull": false
},
"tags": {
"name": "tags",
"type": "text[]",
"primaryKey": false,
"notNull": false,
"default": "'{}'"
},
"upload_date": {
"name": "upload_date",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"premium": {
"name": "premium",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"featured": {
"name": "featured",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"likes_count": {
"name": "likes_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"plays_count": {
"name": "plays_count",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
}
},
"indexes": {
"videos_slug_idx": {
"name": "videos_slug_idx",
"columns": [
{
"expression": "slug",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"videos_upload_date_idx": {
"name": "videos_upload_date_idx",
"columns": [
{
"expression": "upload_date",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"videos_featured_idx": {
"name": "videos_featured_idx",
"columns": [
{
"expression": "featured",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"videos_image_files_id_fk": {
"name": "videos_image_files_id_fk",
"tableFrom": "videos",
"tableTo": "files",
"columnsFrom": [
"image"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
},
"videos_movie_files_id_fk": {
"name": "videos_movie_files_id_fk",
"tableFrom": "videos",
"tableTo": "files",
"columnsFrom": [
"movie"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.recording_plays": {
"name": "recording_plays",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"recording_id": {
"name": "recording_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": false
},
"duration_played": {
"name": "duration_played",
"type": "integer",
"primaryKey": false,
"notNull": false,
"default": 0
},
"completed": {
"name": "completed",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"recording_plays_recording_idx": {
"name": "recording_plays_recording_idx",
"columns": [
{
"expression": "recording_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"recording_plays_user_idx": {
"name": "recording_plays_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"recording_plays_recording_id_recordings_id_fk": {
"name": "recording_plays_recording_id_recordings_id_fk",
"tableFrom": "recording_plays",
"tableTo": "recordings",
"columnsFrom": [
"recording_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"recording_plays_user_id_users_id_fk": {
"name": "recording_plays_user_id_users_id_fk",
"tableFrom": "recording_plays",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
},
"public.recordings": {
"name": "recordings",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true
},
"title": {
"name": "title",
"type": "text",
"primaryKey": false,
"notNull": true
},
"description": {
"name": "description",
"type": "text",
"primaryKey": false,
"notNull": false
},
"slug": {
"name": "slug",
"type": "text",
"primaryKey": false,
"notNull": true
},
"duration": {
"name": "duration",
"type": "integer",
"primaryKey": false,
"notNull": true
},
"events": {
"name": "events",
"type": "jsonb",
"primaryKey": false,
"notNull": false,
"default": "'[]'::jsonb"
},
"device_info": {
"name": "device_info",
"type": "jsonb",
"primaryKey": false,
"notNull": false,
"default": "'[]'::jsonb"
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true
},
"status": {
"name": "status",
"type": "recording_status",
"typeSchema": "public",
"primaryKey": false,
"notNull": true,
"default": "'draft'"
},
"tags": {
"name": "tags",
"type": "text[]",
"primaryKey": false,
"notNull": false,
"default": "'{}'"
},
"linked_video": {
"name": "linked_video",
"type": "text",
"primaryKey": false,
"notNull": false
},
"featured": {
"name": "featured",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"public": {
"name": "public",
"type": "boolean",
"primaryKey": false,
"notNull": false,
"default": false
},
"original_recording_id": {
"name": "original_recording_id",
"type": "text",
"primaryKey": false,
"notNull": false
},
"date_created": {
"name": "date_created",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"default": "now()"
},
"date_updated": {
"name": "date_updated",
"type": "timestamp",
"primaryKey": false,
"notNull": false
}
},
"indexes": {
"recordings_slug_idx": {
"name": "recordings_slug_idx",
"columns": [
{
"expression": "slug",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": true,
"concurrently": false,
"method": "btree",
"with": {}
},
"recordings_user_idx": {
"name": "recordings_user_idx",
"columns": [
{
"expression": "user_id",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"recordings_status_idx": {
"name": "recordings_status_idx",
"columns": [
{
"expression": "status",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"recordings_public_idx": {
"name": "recordings_public_idx",
"columns": [
{
"expression": "public",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
"recordings_user_id_users_id_fk": {
"name": "recordings_user_id_users_id_fk",
"tableFrom": "recordings",
"tableTo": "users",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
},
"recordings_linked_video_videos_id_fk": {
"name": "recordings_linked_video_videos_id_fk",
"tableFrom": "recordings",
"tableTo": "videos",
"columnsFrom": [
"linked_video"
],
"columnsTo": [
"id"
],
"onDelete": "set null",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {},
"policies": {},
"checkConstraints": {},
"isRLSEnabled": false
}
},
"enums": {
"public.achievement_status": {
"name": "achievement_status",
"schema": "public",
"values": [
"draft",
"published"
]
},
"public.user_role": {
"name": "user_role",
"schema": "public",
"values": [
"model",
"viewer",
"admin"
]
},
"public.recording_status": {
"name": "recording_status",
"schema": "public",
"values": [
"draft",
"published",
"archived"
]
}
},
"schemas": {},
"sequences": {},
"roles": {},
"policies": {},
"views": {},
"_meta": {
"columns": {},
"schemas": {},
"tables": {}
}
}