@happyvertical/smrt-video 0.49.2 → 0.49.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-video",
5
- "packageVersion": "0.49.2",
5
+ "packageVersion": "0.49.4",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-video:CharacterAsset": {
8
8
  "name": "characterasset",
@@ -535,7 +535,8 @@
535
535
  "context",
536
536
  "_meta_type"
537
537
  ],
538
- "unique": true
538
+ "unique": true,
539
+ "nullsNotDistinct": true
539
540
  },
540
541
  {
541
542
  "name": "assets_meta_type_idx",
@@ -746,7 +747,7 @@
746
747
  "collectionExportName": "CharacterOwnedAssetCollectionCollection",
747
748
  "schema": {
748
749
  "tableName": "character_assets",
749
- "ddl": "CREATE TABLE IF NOT EXISTS \"character_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
750
+ "ddl": "CREATE TABLE IF NOT EXISTS \"character_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"character_id\" UUID NOT NULL,\n \"asset_id\" UUID NOT NULL,\n \"role\" TEXT NOT NULL DEFAULT 'seed-image',\n \"sort_order\" INTEGER NOT NULL DEFAULT 0\n);",
750
751
  "columns": {
751
752
  "id": {
752
753
  "type": "UUID",
@@ -772,25 +773,76 @@
772
773
  "type": "TIMESTAMP",
773
774
  "notNull": true,
774
775
  "default": "current_timestamp"
776
+ },
777
+ "tenant_id": {
778
+ "type": "UUID",
779
+ "referenceKind": "tenantId",
780
+ "notNull": false,
781
+ "unique": false
782
+ },
783
+ "character_id": {
784
+ "type": "UUID",
785
+ "referenceKind": "foreignKey",
786
+ "notNull": true,
787
+ "unique": false,
788
+ "foreignKey": {
789
+ "table": "characters",
790
+ "column": "id",
791
+ "onDelete": "CASCADE",
792
+ "onUpdate": "CASCADE"
793
+ }
794
+ },
795
+ "asset_id": {
796
+ "type": "UUID",
797
+ "referenceKind": "crossPackageRef",
798
+ "notNull": true,
799
+ "unique": false
800
+ },
801
+ "role": {
802
+ "type": "TEXT",
803
+ "notNull": true,
804
+ "unique": false,
805
+ "default": "seed-image"
806
+ },
807
+ "sort_order": {
808
+ "type": "INTEGER",
809
+ "notNull": true,
810
+ "unique": false,
811
+ "default": 0
775
812
  }
776
813
  },
777
814
  "indexes": [
815
+ {
816
+ "name": "character_assets_character_id_asset_id_idx",
817
+ "columns": [
818
+ "character_id",
819
+ "asset_id",
820
+ "role"
821
+ ],
822
+ "unique": true
823
+ },
778
824
  {
779
825
  "name": "character_assets_slug_context_idx",
780
826
  "columns": [
781
827
  "slug",
782
828
  "context"
783
- ],
784
- "unique": true
829
+ ]
785
830
  },
786
831
  {
787
- "name": "character_assets_created_at_idx",
832
+ "name": "character_assets_tenant_id_created_at_idx",
788
833
  "columns": [
834
+ "tenant_id",
789
835
  "created_at"
790
836
  ]
837
+ },
838
+ {
839
+ "name": "character_assets_asset_id_idx",
840
+ "columns": [
841
+ "asset_id"
842
+ ]
791
843
  }
792
844
  ],
793
- "version": "3c2836ae"
845
+ "version": "c032f70e"
794
846
  }
795
847
  },
796
848
  "@happyvertical/smrt-video:CharacterOwnedAsset": {
@@ -1299,7 +1351,8 @@
1299
1351
  "context",
1300
1352
  "_meta_type"
1301
1353
  ],
1302
- "unique": true
1354
+ "unique": true,
1355
+ "nullsNotDistinct": true
1303
1356
  },
1304
1357
  {
1305
1358
  "name": "characters_meta_type_idx",
@@ -1414,8 +1467,8 @@
1414
1467
  "exportName": "CharacterCollection",
1415
1468
  "collectionExportName": "CharacterCollectionCollection",
1416
1469
  "schema": {
1417
- "tableName": "character_collections",
1418
- "ddl": "CREATE TABLE IF NOT EXISTS \"character_collections\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
1470
+ "tableName": "characters",
1471
+ "ddl": "CREATE TABLE IF NOT EXISTS \"characters\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"name\" TEXT DEFAULT '',\n \"description\" TEXT,\n \"image_asset_id\" UUID,\n \"base_motion_asset_id\" UUID,\n \"voice_profile_id\" UUID,\n \"branding_kit\" JSON,\n \"status\" TEXT DEFAULT 'pending',\n \"performer_id\" UUID,\n \"default_scene_id\" UUID,\n \"scene_configs\" JSON DEFAULT '[]',\n \"profile_id\" UUID\n);",
1419
1472
  "columns": {
1420
1473
  "id": {
1421
1474
  "type": "UUID",
@@ -1432,6 +1485,14 @@
1432
1485
  "notNull": true,
1433
1486
  "default": ""
1434
1487
  },
1488
+ "_meta_type": {
1489
+ "type": "TEXT",
1490
+ "notNull": true
1491
+ },
1492
+ "_meta_data": {
1493
+ "type": "JSON",
1494
+ "notNull": false
1495
+ },
1435
1496
  "created_at": {
1436
1497
  "type": "TIMESTAMP",
1437
1498
  "notNull": true,
@@ -1441,25 +1502,141 @@
1441
1502
  "type": "TIMESTAMP",
1442
1503
  "notNull": true,
1443
1504
  "default": "current_timestamp"
1505
+ },
1506
+ "tenant_id": {
1507
+ "type": "UUID",
1508
+ "referenceKind": "tenantId",
1509
+ "notNull": false
1510
+ },
1511
+ "name": {
1512
+ "type": "TEXT",
1513
+ "notNull": false,
1514
+ "default": ""
1515
+ },
1516
+ "description": {
1517
+ "type": "TEXT",
1518
+ "notNull": false
1519
+ },
1520
+ "image_asset_id": {
1521
+ "type": "UUID",
1522
+ "referenceKind": "crossPackageRef",
1523
+ "notNull": false
1524
+ },
1525
+ "base_motion_asset_id": {
1526
+ "type": "UUID",
1527
+ "referenceKind": "crossPackageRef",
1528
+ "notNull": false
1529
+ },
1530
+ "voice_profile_id": {
1531
+ "type": "UUID",
1532
+ "referenceKind": "crossPackageRef",
1533
+ "notNull": false
1534
+ },
1535
+ "branding_kit": {
1536
+ "type": "JSON",
1537
+ "notNull": false
1538
+ },
1539
+ "status": {
1540
+ "type": "TEXT",
1541
+ "notNull": false,
1542
+ "default": "pending"
1543
+ },
1544
+ "performer_id": {
1545
+ "type": "UUID",
1546
+ "referenceKind": "foreignKey",
1547
+ "notNull": false,
1548
+ "foreignKey": {
1549
+ "table": "performers",
1550
+ "column": "id",
1551
+ "onDelete": "NO ACTION",
1552
+ "onUpdate": "CASCADE"
1553
+ }
1554
+ },
1555
+ "default_scene_id": {
1556
+ "type": "UUID",
1557
+ "referenceKind": "foreignKey",
1558
+ "notNull": false,
1559
+ "foreignKey": {
1560
+ "table": "scenes",
1561
+ "column": "id",
1562
+ "onDelete": "NO ACTION",
1563
+ "onUpdate": "CASCADE"
1564
+ }
1565
+ },
1566
+ "scene_configs": {
1567
+ "type": "JSON",
1568
+ "notNull": false,
1569
+ "default": []
1570
+ },
1571
+ "profile_id": {
1572
+ "type": "UUID",
1573
+ "referenceKind": "crossPackageRef",
1574
+ "notNull": false
1444
1575
  }
1445
1576
  },
1446
1577
  "indexes": [
1447
1578
  {
1448
- "name": "character_collections_slug_context_idx",
1579
+ "name": "characters_slug_context_meta_type_idx",
1449
1580
  "columns": [
1581
+ "tenant_id",
1450
1582
  "slug",
1451
- "context"
1583
+ "context",
1584
+ "_meta_type"
1452
1585
  ],
1453
- "unique": true
1586
+ "unique": true,
1587
+ "nullsNotDistinct": true
1588
+ },
1589
+ {
1590
+ "name": "characters_meta_type_idx",
1591
+ "columns": [
1592
+ "_meta_type"
1593
+ ]
1454
1594
  },
1455
1595
  {
1456
- "name": "character_collections_created_at_idx",
1596
+ "name": "characters_tenant_id_created_at_idx",
1457
1597
  "columns": [
1598
+ "tenant_id",
1458
1599
  "created_at"
1459
1600
  ]
1601
+ },
1602
+ {
1603
+ "name": "characters_image_asset_id_idx",
1604
+ "columns": [
1605
+ "image_asset_id"
1606
+ ]
1607
+ },
1608
+ {
1609
+ "name": "characters_base_motion_asset_id_idx",
1610
+ "columns": [
1611
+ "base_motion_asset_id"
1612
+ ]
1613
+ },
1614
+ {
1615
+ "name": "characters_voice_profile_id_idx",
1616
+ "columns": [
1617
+ "voice_profile_id"
1618
+ ]
1619
+ },
1620
+ {
1621
+ "name": "characters_performer_id_idx",
1622
+ "columns": [
1623
+ "performer_id"
1624
+ ]
1625
+ },
1626
+ {
1627
+ "name": "characters_default_scene_id_idx",
1628
+ "columns": [
1629
+ "default_scene_id"
1630
+ ]
1631
+ },
1632
+ {
1633
+ "name": "characters_profile_id_idx",
1634
+ "columns": [
1635
+ "profile_id"
1636
+ ]
1460
1637
  }
1461
1638
  ],
1462
- "version": "876075e3"
1639
+ "version": "eae4aae5"
1463
1640
  }
1464
1641
  },
1465
1642
  "@happyvertical/smrt-video:CompositeJob": {
@@ -1680,7 +1857,8 @@
1680
1857
  "context",
1681
1858
  "_meta_type"
1682
1859
  ],
1683
- "unique": true
1860
+ "unique": true,
1861
+ "nullsNotDistinct": true
1684
1862
  },
1685
1863
  {
1686
1864
  "name": "composite_jobs_meta_type_idx",
@@ -2248,7 +2426,8 @@
2248
2426
  "context",
2249
2427
  "_meta_type"
2250
2428
  ],
2251
- "unique": true
2429
+ "unique": true,
2430
+ "nullsNotDistinct": true
2252
2431
  },
2253
2432
  {
2254
2433
  "name": "assets_meta_type_idx",
@@ -2459,7 +2638,7 @@
2459
2638
  "collectionExportName": "PerformerOwnedAssetCollectionCollection",
2460
2639
  "schema": {
2461
2640
  "tableName": "performer_assets",
2462
- "ddl": "CREATE TABLE IF NOT EXISTS \"performer_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
2641
+ "ddl": "CREATE TABLE IF NOT EXISTS \"performer_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"performer_id\" UUID NOT NULL,\n \"asset_id\" UUID NOT NULL,\n \"role\" TEXT NOT NULL DEFAULT 'reference',\n \"sort_order\" INTEGER NOT NULL DEFAULT 0\n);",
2463
2642
  "columns": {
2464
2643
  "id": {
2465
2644
  "type": "UUID",
@@ -2485,25 +2664,76 @@
2485
2664
  "type": "TIMESTAMP",
2486
2665
  "notNull": true,
2487
2666
  "default": "current_timestamp"
2667
+ },
2668
+ "tenant_id": {
2669
+ "type": "UUID",
2670
+ "referenceKind": "tenantId",
2671
+ "notNull": false,
2672
+ "unique": false
2673
+ },
2674
+ "performer_id": {
2675
+ "type": "UUID",
2676
+ "referenceKind": "foreignKey",
2677
+ "notNull": true,
2678
+ "unique": false,
2679
+ "foreignKey": {
2680
+ "table": "performers",
2681
+ "column": "id",
2682
+ "onDelete": "CASCADE",
2683
+ "onUpdate": "CASCADE"
2684
+ }
2685
+ },
2686
+ "asset_id": {
2687
+ "type": "UUID",
2688
+ "referenceKind": "crossPackageRef",
2689
+ "notNull": true,
2690
+ "unique": false
2691
+ },
2692
+ "role": {
2693
+ "type": "TEXT",
2694
+ "notNull": true,
2695
+ "unique": false,
2696
+ "default": "reference"
2697
+ },
2698
+ "sort_order": {
2699
+ "type": "INTEGER",
2700
+ "notNull": true,
2701
+ "unique": false,
2702
+ "default": 0
2488
2703
  }
2489
2704
  },
2490
2705
  "indexes": [
2706
+ {
2707
+ "name": "performer_assets_performer_id_asset_id_idx",
2708
+ "columns": [
2709
+ "performer_id",
2710
+ "asset_id",
2711
+ "role"
2712
+ ],
2713
+ "unique": true
2714
+ },
2491
2715
  {
2492
2716
  "name": "performer_assets_slug_context_idx",
2493
2717
  "columns": [
2494
2718
  "slug",
2495
2719
  "context"
2496
- ],
2497
- "unique": true
2720
+ ]
2498
2721
  },
2499
2722
  {
2500
- "name": "performer_assets_created_at_idx",
2723
+ "name": "performer_assets_tenant_id_created_at_idx",
2501
2724
  "columns": [
2725
+ "tenant_id",
2502
2726
  "created_at"
2503
2727
  ]
2728
+ },
2729
+ {
2730
+ "name": "performer_assets_asset_id_idx",
2731
+ "columns": [
2732
+ "asset_id"
2733
+ ]
2504
2734
  }
2505
2735
  ],
2506
- "version": "591e6fb2"
2736
+ "version": "9a402665"
2507
2737
  }
2508
2738
  },
2509
2739
  "@happyvertical/smrt-video:PerformerOwnedAsset": {
@@ -2970,7 +3200,8 @@
2970
3200
  "context",
2971
3201
  "_meta_type"
2972
3202
  ],
2973
- "unique": true
3203
+ "unique": true,
3204
+ "nullsNotDistinct": true
2974
3205
  },
2975
3206
  {
2976
3207
  "name": "performers_meta_type_idx",
@@ -3538,7 +3769,8 @@
3538
3769
  "context",
3539
3770
  "_meta_type"
3540
3771
  ],
3541
- "unique": true
3772
+ "unique": true,
3773
+ "nullsNotDistinct": true
3542
3774
  },
3543
3775
  {
3544
3776
  "name": "assets_meta_type_idx",
@@ -3749,7 +3981,7 @@
3749
3981
  "collectionExportName": "SceneOwnedAssetCollectionCollection",
3750
3982
  "schema": {
3751
3983
  "tableName": "scene_assets",
3752
- "ddl": "CREATE TABLE IF NOT EXISTS \"scene_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
3984
+ "ddl": "CREATE TABLE IF NOT EXISTS \"scene_assets\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"scene_id\" UUID NOT NULL,\n \"asset_id\" UUID NOT NULL,\n \"role\" TEXT NOT NULL DEFAULT 'source',\n \"sort_order\" INTEGER NOT NULL DEFAULT 0\n);",
3753
3985
  "columns": {
3754
3986
  "id": {
3755
3987
  "type": "UUID",
@@ -3775,25 +4007,76 @@
3775
4007
  "type": "TIMESTAMP",
3776
4008
  "notNull": true,
3777
4009
  "default": "current_timestamp"
3778
- }
3779
- },
4010
+ },
4011
+ "tenant_id": {
4012
+ "type": "UUID",
4013
+ "referenceKind": "tenantId",
4014
+ "notNull": false,
4015
+ "unique": false
4016
+ },
4017
+ "scene_id": {
4018
+ "type": "UUID",
4019
+ "referenceKind": "foreignKey",
4020
+ "notNull": true,
4021
+ "unique": false,
4022
+ "foreignKey": {
4023
+ "table": "scenes",
4024
+ "column": "id",
4025
+ "onDelete": "CASCADE",
4026
+ "onUpdate": "CASCADE"
4027
+ }
4028
+ },
4029
+ "asset_id": {
4030
+ "type": "UUID",
4031
+ "referenceKind": "crossPackageRef",
4032
+ "notNull": true,
4033
+ "unique": false
4034
+ },
4035
+ "role": {
4036
+ "type": "TEXT",
4037
+ "notNull": true,
4038
+ "unique": false,
4039
+ "default": "source"
4040
+ },
4041
+ "sort_order": {
4042
+ "type": "INTEGER",
4043
+ "notNull": true,
4044
+ "unique": false,
4045
+ "default": 0
4046
+ }
4047
+ },
3780
4048
  "indexes": [
4049
+ {
4050
+ "name": "scene_assets_scene_id_asset_id_idx",
4051
+ "columns": [
4052
+ "scene_id",
4053
+ "asset_id",
4054
+ "role"
4055
+ ],
4056
+ "unique": true
4057
+ },
3781
4058
  {
3782
4059
  "name": "scene_assets_slug_context_idx",
3783
4060
  "columns": [
3784
4061
  "slug",
3785
4062
  "context"
3786
- ],
3787
- "unique": true
4063
+ ]
3788
4064
  },
3789
4065
  {
3790
- "name": "scene_assets_created_at_idx",
4066
+ "name": "scene_assets_tenant_id_created_at_idx",
3791
4067
  "columns": [
4068
+ "tenant_id",
3792
4069
  "created_at"
3793
4070
  ]
4071
+ },
4072
+ {
4073
+ "name": "scene_assets_asset_id_idx",
4074
+ "columns": [
4075
+ "asset_id"
4076
+ ]
3794
4077
  }
3795
4078
  ],
3796
- "version": "f41476c0"
4079
+ "version": "68f91ceb"
3797
4080
  }
3798
4081
  },
3799
4082
  "@happyvertical/smrt-video:SceneOwnedAsset": {
@@ -4278,7 +4561,8 @@
4278
4561
  "context",
4279
4562
  "_meta_type"
4280
4563
  ],
4281
- "unique": true
4564
+ "unique": true,
4565
+ "nullsNotDistinct": true
4282
4566
  },
4283
4567
  {
4284
4568
  "name": "scenes_meta_type_idx",
@@ -4834,7 +5118,8 @@
4834
5118
  "context",
4835
5119
  "_meta_type"
4836
5120
  ],
4837
- "unique": true
5121
+ "unique": true,
5122
+ "nullsNotDistinct": true
4838
5123
  },
4839
5124
  {
4840
5125
  "name": "assets_meta_type_idx",
@@ -6351,7 +6636,8 @@
6351
6636
  "context",
6352
6637
  "_meta_type"
6353
6638
  ],
6354
- "unique": true
6639
+ "unique": true,
6640
+ "nullsNotDistinct": true
6355
6641
  },
6356
6642
  {
6357
6643
  "name": "contents_meta_type_idx",
@@ -6460,7 +6746,7 @@
6460
6746
  "collectionExportName": "VideoCompositionCollectionCollection",
6461
6747
  "schema": {
6462
6748
  "tableName": "contents",
6463
- "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
6749
+ "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"type\" TEXT,\n \"variant\" TEXT,\n \"file_key\" TEXT,\n \"author\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"title\" TEXT,\n \"description\" TEXT,\n \"body\" TEXT,\n \"body_format\" TEXT,\n \"publish_date\" TIMESTAMP,\n \"url\" TEXT,\n \"source\" TEXT,\n \"original_url\" TEXT,\n \"language\" TEXT,\n \"tags\" JSON DEFAULT '[]',\n \"category\" TEXT,\n \"status\" TEXT DEFAULT 'draft',\n \"state\" TEXT DEFAULT 'active',\n \"metadata\" JSON DEFAULT '{}',\n \"thumbnail_asset_id\" UUID,\n \"fps\" INTEGER DEFAULT 30,\n \"width\" INTEGER DEFAULT 1920,\n \"height\" INTEGER DEFAULT 1080,\n \"duration_in_frames\" INTEGER DEFAULT 0,\n \"render_status\" TEXT DEFAULT 'draft',\n \"render_progress\" INTEGER DEFAULT 0,\n \"composition_id\" UUID,\n \"position\" INTEGER DEFAULT 0,\n \"transition_type\" TEXT DEFAULT 'none',\n \"transition_duration_frames\" INTEGER DEFAULT 0,\n \"sequence_id\" UUID,\n \"scene_id\" UUID,\n \"trim_before_frames\" INTEGER DEFAULT 0,\n \"trim_after_frames\" INTEGER DEFAULT 0,\n \"script_text\" TEXT DEFAULT '',\n \"script_word_count\" INTEGER DEFAULT 0,\n \"target_duration\" INTEGER DEFAULT 30,\n \"shot_status\" TEXT DEFAULT 'draft',\n \"progress\" INTEGER DEFAULT 0,\n \"error_message\" TEXT,\n \"status_message\" TEXT,\n \"video_metadata\" JSON,\n \"feed_source_id\" UUID,\n \"source_guid\" TEXT,\n \"source_name\" TEXT,\n \"source_homepage_url\" TEXT,\n \"external_url\" TEXT,\n \"original_published_at\" TIMESTAMP,\n \"dedupe_key\" TEXT,\n \"voice_profile_id\" UUID,\n \"source_text\" TEXT DEFAULT '',\n \"audio_asset_id\" UUID,\n \"duration\" INTEGER DEFAULT 0,\n \"word_timings\" JSON DEFAULT '[]',\n \"audio_metadata\" JSON\n);",
6464
6750
  "columns": {
6465
6751
  "id": {
6466
6752
  "type": "UUID",
@@ -6477,6 +6763,14 @@
6477
6763
  "notNull": true,
6478
6764
  "default": ""
6479
6765
  },
6766
+ "_meta_type": {
6767
+ "type": "TEXT",
6768
+ "notNull": true
6769
+ },
6770
+ "_meta_data": {
6771
+ "type": "JSON",
6772
+ "notNull": false
6773
+ },
6480
6774
  "created_at": {
6481
6775
  "type": "TIMESTAMP",
6482
6776
  "notNull": true,
@@ -6486,82 +6780,415 @@
6486
6780
  "type": "TIMESTAMP",
6487
6781
  "notNull": true,
6488
6782
  "default": "current_timestamp"
6489
- }
6490
- },
6491
- "indexes": [
6492
- {
6493
- "name": "contents_slug_context_idx",
6494
- "columns": [
6495
- "slug",
6496
- "context"
6497
- ],
6498
- "unique": true
6499
6783
  },
6500
- {
6501
- "name": "contents_created_at_idx",
6502
- "columns": [
6503
- "created_at"
6504
- ]
6505
- }
6506
- ],
6507
- "version": "5cc43cec"
6508
- }
6509
- },
6510
- "@happyvertical/smrt-video:VideoSequenceAsset": {
6511
- "name": "videosequenceasset",
6512
- "className": "VideoSequenceAsset",
6513
- "qualifiedName": "@happyvertical/smrt-video:VideoSequenceAsset",
6514
- "collection": "assets",
6515
- "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-sequence-asset.ts",
6516
- "packageName": "@happyvertical/smrt-video",
6517
- "fields": {
6518
- "created_at": {
6519
- "type": "datetime",
6520
- "required": false
6521
- },
6522
- "updated_at": {
6523
- "type": "datetime",
6524
- "required": false
6525
- },
6526
- "tenantId": {
6527
- "type": "text",
6528
- "required": false,
6529
- "_meta": {
6530
- "sqlType": "UUID",
6531
- "nullable": true,
6532
- "__tenancy": {
6533
- "isTenantIdField": true,
6534
- "autoFilter": true,
6535
- "required": false,
6536
- "autoPopulate": true,
6537
- "nullable": true,
6538
- "mode": "optional",
6539
- "field": "tenantId",
6540
- "allowSuperAdminBypass": false
6784
+ "tenant_id": {
6785
+ "type": "UUID",
6786
+ "referenceKind": "tenantId",
6787
+ "notNull": false
6788
+ },
6789
+ "type": {
6790
+ "type": "TEXT",
6791
+ "notNull": false
6792
+ },
6793
+ "variant": {
6794
+ "type": "TEXT",
6795
+ "notNull": false
6796
+ },
6797
+ "file_key": {
6798
+ "type": "TEXT",
6799
+ "notNull": false
6800
+ },
6801
+ "author": {
6802
+ "type": "TEXT",
6803
+ "notNull": false
6804
+ },
6805
+ "name": {
6806
+ "type": "TEXT",
6807
+ "notNull": false,
6808
+ "default": ""
6809
+ },
6810
+ "title": {
6811
+ "type": "TEXT",
6812
+ "notNull": false
6813
+ },
6814
+ "description": {
6815
+ "type": "TEXT",
6816
+ "notNull": false
6817
+ },
6818
+ "body": {
6819
+ "type": "TEXT",
6820
+ "notNull": false
6821
+ },
6822
+ "body_format": {
6823
+ "type": "TEXT",
6824
+ "notNull": false
6825
+ },
6826
+ "publish_date": {
6827
+ "type": "TIMESTAMP",
6828
+ "notNull": false
6829
+ },
6830
+ "url": {
6831
+ "type": "TEXT",
6832
+ "notNull": false
6833
+ },
6834
+ "source": {
6835
+ "type": "TEXT",
6836
+ "notNull": false
6837
+ },
6838
+ "original_url": {
6839
+ "type": "TEXT",
6840
+ "notNull": false
6841
+ },
6842
+ "language": {
6843
+ "type": "TEXT",
6844
+ "notNull": false
6845
+ },
6846
+ "tags": {
6847
+ "type": "JSON",
6848
+ "notNull": false,
6849
+ "default": []
6850
+ },
6851
+ "category": {
6852
+ "type": "TEXT",
6853
+ "notNull": false
6854
+ },
6855
+ "status": {
6856
+ "type": "TEXT",
6857
+ "notNull": false,
6858
+ "default": "draft"
6859
+ },
6860
+ "state": {
6861
+ "type": "TEXT",
6862
+ "notNull": false,
6863
+ "default": "active"
6864
+ },
6865
+ "metadata": {
6866
+ "type": "JSON",
6867
+ "notNull": false,
6868
+ "default": {}
6869
+ },
6870
+ "thumbnail_asset_id": {
6871
+ "type": "UUID",
6872
+ "referenceKind": "crossPackageRef",
6873
+ "notNull": false
6874
+ },
6875
+ "fps": {
6876
+ "type": "INTEGER",
6877
+ "notNull": false,
6878
+ "default": 30
6879
+ },
6880
+ "width": {
6881
+ "type": "INTEGER",
6882
+ "notNull": false,
6883
+ "default": 1920
6884
+ },
6885
+ "height": {
6886
+ "type": "INTEGER",
6887
+ "notNull": false,
6888
+ "default": 1080
6889
+ },
6890
+ "duration_in_frames": {
6891
+ "type": "INTEGER",
6892
+ "notNull": false,
6893
+ "default": 0
6894
+ },
6895
+ "render_status": {
6896
+ "type": "TEXT",
6897
+ "notNull": false,
6898
+ "default": "draft"
6899
+ },
6900
+ "render_progress": {
6901
+ "type": "INTEGER",
6902
+ "notNull": false,
6903
+ "default": 0
6904
+ },
6905
+ "composition_id": {
6906
+ "type": "UUID",
6907
+ "referenceKind": "foreignKey",
6908
+ "notNull": false,
6909
+ "foreignKey": {
6910
+ "table": "contents",
6911
+ "column": "id",
6912
+ "onDelete": "NO ACTION",
6913
+ "onUpdate": "CASCADE"
6541
6914
  }
6542
- }
6543
- },
6544
- "name": {
6545
- "type": "text",
6546
- "required": false
6547
- },
6548
- "sourceUri": {
6549
- "type": "text",
6915
+ },
6916
+ "position": {
6917
+ "type": "INTEGER",
6918
+ "notNull": false,
6919
+ "default": 0
6920
+ },
6921
+ "transition_type": {
6922
+ "type": "TEXT",
6923
+ "notNull": false,
6924
+ "default": "none"
6925
+ },
6926
+ "transition_duration_frames": {
6927
+ "type": "INTEGER",
6928
+ "notNull": false,
6929
+ "default": 0
6930
+ },
6931
+ "sequence_id": {
6932
+ "type": "UUID",
6933
+ "referenceKind": "foreignKey",
6934
+ "notNull": false,
6935
+ "foreignKey": {
6936
+ "table": "contents",
6937
+ "column": "id",
6938
+ "onDelete": "NO ACTION",
6939
+ "onUpdate": "CASCADE"
6940
+ }
6941
+ },
6942
+ "scene_id": {
6943
+ "type": "UUID",
6944
+ "referenceKind": "foreignKey",
6945
+ "notNull": false,
6946
+ "foreignKey": {
6947
+ "table": "scenes",
6948
+ "column": "id",
6949
+ "onDelete": "NO ACTION",
6950
+ "onUpdate": "CASCADE"
6951
+ }
6952
+ },
6953
+ "trim_before_frames": {
6954
+ "type": "INTEGER",
6955
+ "notNull": false,
6956
+ "default": 0
6957
+ },
6958
+ "trim_after_frames": {
6959
+ "type": "INTEGER",
6960
+ "notNull": false,
6961
+ "default": 0
6962
+ },
6963
+ "script_text": {
6964
+ "type": "TEXT",
6965
+ "notNull": false,
6966
+ "default": ""
6967
+ },
6968
+ "script_word_count": {
6969
+ "type": "INTEGER",
6970
+ "notNull": false,
6971
+ "default": 0
6972
+ },
6973
+ "target_duration": {
6974
+ "type": "INTEGER",
6975
+ "notNull": false,
6976
+ "default": 30
6977
+ },
6978
+ "shot_status": {
6979
+ "type": "TEXT",
6980
+ "notNull": false,
6981
+ "default": "draft"
6982
+ },
6983
+ "progress": {
6984
+ "type": "INTEGER",
6985
+ "notNull": false,
6986
+ "default": 0
6987
+ },
6988
+ "error_message": {
6989
+ "type": "TEXT",
6990
+ "notNull": false
6991
+ },
6992
+ "status_message": {
6993
+ "type": "TEXT",
6994
+ "notNull": false
6995
+ },
6996
+ "video_metadata": {
6997
+ "type": "JSON",
6998
+ "notNull": false
6999
+ },
7000
+ "feed_source_id": {
7001
+ "type": "UUID",
7002
+ "referenceKind": "foreignKey",
7003
+ "notNull": false
7004
+ },
7005
+ "source_guid": {
7006
+ "type": "TEXT",
7007
+ "notNull": false
7008
+ },
7009
+ "source_name": {
7010
+ "type": "TEXT",
7011
+ "notNull": false
7012
+ },
7013
+ "source_homepage_url": {
7014
+ "type": "TEXT",
7015
+ "notNull": false
7016
+ },
7017
+ "external_url": {
7018
+ "type": "TEXT",
7019
+ "notNull": false
7020
+ },
7021
+ "original_published_at": {
7022
+ "type": "TIMESTAMP",
7023
+ "notNull": false
7024
+ },
7025
+ "dedupe_key": {
7026
+ "type": "TEXT",
7027
+ "notNull": false
7028
+ },
7029
+ "voice_profile_id": {
7030
+ "type": "UUID",
7031
+ "referenceKind": "foreignKey",
7032
+ "notNull": false
7033
+ },
7034
+ "source_text": {
7035
+ "type": "TEXT",
7036
+ "notNull": false,
7037
+ "default": ""
7038
+ },
7039
+ "audio_asset_id": {
7040
+ "type": "UUID",
7041
+ "referenceKind": "crossPackageRef",
7042
+ "notNull": false
7043
+ },
7044
+ "duration": {
7045
+ "type": "INTEGER",
7046
+ "notNull": false,
7047
+ "default": 0
7048
+ },
7049
+ "word_timings": {
7050
+ "type": "JSON",
7051
+ "notNull": false,
7052
+ "default": []
7053
+ },
7054
+ "audio_metadata": {
7055
+ "type": "JSON",
7056
+ "notNull": false
7057
+ }
7058
+ },
7059
+ "indexes": [
7060
+ {
7061
+ "name": "contents_slug_context_meta_type_idx",
7062
+ "columns": [
7063
+ "tenant_id",
7064
+ "slug",
7065
+ "context",
7066
+ "_meta_type"
7067
+ ],
7068
+ "unique": true,
7069
+ "nullsNotDistinct": true
7070
+ },
7071
+ {
7072
+ "name": "contents_meta_type_idx",
7073
+ "columns": [
7074
+ "_meta_type"
7075
+ ]
7076
+ },
7077
+ {
7078
+ "name": "contents_tenant_id_publish_date_idx",
7079
+ "columns": [
7080
+ "tenant_id",
7081
+ "publish_date"
7082
+ ]
7083
+ },
7084
+ {
7085
+ "name": "contents_tenant_id_created_at_idx",
7086
+ "columns": [
7087
+ "tenant_id",
7088
+ "created_at"
7089
+ ]
7090
+ },
7091
+ {
7092
+ "name": "contents_thumbnail_asset_id_idx",
7093
+ "columns": [
7094
+ "thumbnail_asset_id"
7095
+ ]
7096
+ },
7097
+ {
7098
+ "name": "contents_composition_id_idx",
7099
+ "columns": [
7100
+ "composition_id"
7101
+ ]
7102
+ },
7103
+ {
7104
+ "name": "contents_sequence_id_idx",
7105
+ "columns": [
7106
+ "sequence_id"
7107
+ ]
7108
+ },
7109
+ {
7110
+ "name": "contents_scene_id_idx",
7111
+ "columns": [
7112
+ "scene_id"
7113
+ ]
7114
+ },
7115
+ {
7116
+ "name": "contents_feed_source_id_idx",
7117
+ "columns": [
7118
+ "feed_source_id"
7119
+ ]
7120
+ },
7121
+ {
7122
+ "name": "contents_voice_profile_id_idx",
7123
+ "columns": [
7124
+ "voice_profile_id"
7125
+ ]
7126
+ },
7127
+ {
7128
+ "name": "contents_audio_asset_id_idx",
7129
+ "columns": [
7130
+ "audio_asset_id"
7131
+ ]
7132
+ }
7133
+ ],
7134
+ "version": "8f49f941"
7135
+ }
7136
+ },
7137
+ "@happyvertical/smrt-video:VideoSequenceAsset": {
7138
+ "name": "videosequenceasset",
7139
+ "className": "VideoSequenceAsset",
7140
+ "qualifiedName": "@happyvertical/smrt-video:VideoSequenceAsset",
7141
+ "collection": "assets",
7142
+ "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-sequence-asset.ts",
7143
+ "packageName": "@happyvertical/smrt-video",
7144
+ "fields": {
7145
+ "created_at": {
7146
+ "type": "datetime",
6550
7147
  "required": false
6551
7148
  },
6552
- "mimeType": {
6553
- "type": "text",
7149
+ "updated_at": {
7150
+ "type": "datetime",
6554
7151
  "required": false
6555
7152
  },
6556
- "description": {
7153
+ "tenantId": {
6557
7154
  "type": "text",
6558
- "required": false
7155
+ "required": false,
7156
+ "_meta": {
7157
+ "sqlType": "UUID",
7158
+ "nullable": true,
7159
+ "__tenancy": {
7160
+ "isTenantIdField": true,
7161
+ "autoFilter": true,
7162
+ "required": false,
7163
+ "autoPopulate": true,
7164
+ "nullable": true,
7165
+ "mode": "optional",
7166
+ "field": "tenantId",
7167
+ "allowSuperAdminBypass": false
7168
+ }
7169
+ }
6559
7170
  },
6560
- "metadata": {
7171
+ "name": {
6561
7172
  "type": "text",
6562
7173
  "required": false
6563
7174
  },
6564
- "version": {
7175
+ "sourceUri": {
7176
+ "type": "text",
7177
+ "required": false
7178
+ },
7179
+ "mimeType": {
7180
+ "type": "text",
7181
+ "required": false
7182
+ },
7183
+ "description": {
7184
+ "type": "text",
7185
+ "required": false
7186
+ },
7187
+ "metadata": {
7188
+ "type": "text",
7189
+ "required": false
7190
+ },
7191
+ "version": {
6565
7192
  "type": "integer",
6566
7193
  "required": true,
6567
7194
  "default": 1
@@ -7038,7 +7665,8 @@
7038
7665
  "context",
7039
7666
  "_meta_type"
7040
7667
  ],
7041
- "unique": true
7668
+ "unique": true,
7669
+ "nullsNotDistinct": true
7042
7670
  },
7043
7671
  {
7044
7672
  "name": "assets_meta_type_idx",
@@ -8550,7 +9178,8 @@
8550
9178
  "context",
8551
9179
  "_meta_type"
8552
9180
  ],
8553
- "unique": true
9181
+ "unique": true,
9182
+ "nullsNotDistinct": true
8554
9183
  },
8555
9184
  {
8556
9185
  "name": "contents_meta_type_idx",
@@ -8659,7 +9288,7 @@
8659
9288
  "collectionExportName": "VideoSequenceCollectionCollection",
8660
9289
  "schema": {
8661
9290
  "tableName": "contents",
8662
- "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
9291
+ "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"type\" TEXT,\n \"variant\" TEXT,\n \"file_key\" TEXT,\n \"author\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"title\" TEXT,\n \"description\" TEXT,\n \"body\" TEXT,\n \"body_format\" TEXT,\n \"publish_date\" TIMESTAMP,\n \"url\" TEXT,\n \"source\" TEXT,\n \"original_url\" TEXT,\n \"language\" TEXT,\n \"tags\" JSON DEFAULT '[]',\n \"category\" TEXT,\n \"status\" TEXT DEFAULT 'draft',\n \"state\" TEXT DEFAULT 'active',\n \"metadata\" JSON DEFAULT '{}',\n \"thumbnail_asset_id\" UUID,\n \"fps\" INTEGER DEFAULT 30,\n \"width\" INTEGER DEFAULT 1920,\n \"height\" INTEGER DEFAULT 1080,\n \"duration_in_frames\" INTEGER DEFAULT 0,\n \"render_status\" TEXT DEFAULT 'draft',\n \"render_progress\" INTEGER DEFAULT 0,\n \"composition_id\" UUID,\n \"position\" INTEGER DEFAULT 0,\n \"transition_type\" TEXT DEFAULT 'none',\n \"transition_duration_frames\" INTEGER DEFAULT 0,\n \"sequence_id\" UUID,\n \"scene_id\" UUID,\n \"trim_before_frames\" INTEGER DEFAULT 0,\n \"trim_after_frames\" INTEGER DEFAULT 0,\n \"script_text\" TEXT DEFAULT '',\n \"script_word_count\" INTEGER DEFAULT 0,\n \"target_duration\" INTEGER DEFAULT 30,\n \"shot_status\" TEXT DEFAULT 'draft',\n \"progress\" INTEGER DEFAULT 0,\n \"error_message\" TEXT,\n \"status_message\" TEXT,\n \"video_metadata\" JSON,\n \"feed_source_id\" UUID,\n \"source_guid\" TEXT,\n \"source_name\" TEXT,\n \"source_homepage_url\" TEXT,\n \"external_url\" TEXT,\n \"original_published_at\" TIMESTAMP,\n \"dedupe_key\" TEXT,\n \"voice_profile_id\" UUID,\n \"source_text\" TEXT DEFAULT '',\n \"audio_asset_id\" UUID,\n \"duration\" INTEGER DEFAULT 0,\n \"word_timings\" JSON DEFAULT '[]',\n \"audio_metadata\" JSON\n);",
8663
9292
  "columns": {
8664
9293
  "id": {
8665
9294
  "type": "UUID",
@@ -8676,6 +9305,14 @@
8676
9305
  "notNull": true,
8677
9306
  "default": ""
8678
9307
  },
9308
+ "_meta_type": {
9309
+ "type": "TEXT",
9310
+ "notNull": true
9311
+ },
9312
+ "_meta_data": {
9313
+ "type": "JSON",
9314
+ "notNull": false
9315
+ },
8679
9316
  "created_at": {
8680
9317
  "type": "TIMESTAMP",
8681
9318
  "notNull": true,
@@ -8685,140 +9322,473 @@
8685
9322
  "type": "TIMESTAMP",
8686
9323
  "notNull": true,
8687
9324
  "default": "current_timestamp"
8688
- }
8689
- },
8690
- "indexes": [
8691
- {
8692
- "name": "contents_slug_context_idx",
8693
- "columns": [
8694
- "slug",
8695
- "context"
8696
- ],
8697
- "unique": true
8698
9325
  },
8699
- {
8700
- "name": "contents_created_at_idx",
8701
- "columns": [
8702
- "created_at"
8703
- ]
8704
- }
8705
- ],
8706
- "version": "dbf0e6ae"
8707
- }
8708
- },
8709
- "@happyvertical/smrt-video:VideoShotAsset": {
8710
- "name": "videoshotasset",
8711
- "className": "VideoShotAsset",
8712
- "qualifiedName": "@happyvertical/smrt-video:VideoShotAsset",
8713
- "collection": "assets",
8714
- "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-shot-asset.ts",
8715
- "packageName": "@happyvertical/smrt-video",
8716
- "fields": {
8717
- "created_at": {
8718
- "type": "datetime",
8719
- "required": false
8720
- },
8721
- "updated_at": {
8722
- "type": "datetime",
8723
- "required": false
8724
- },
8725
- "tenantId": {
8726
- "type": "text",
8727
- "required": false,
8728
- "_meta": {
8729
- "sqlType": "UUID",
8730
- "nullable": true,
8731
- "__tenancy": {
8732
- "isTenantIdField": true,
8733
- "autoFilter": true,
8734
- "required": false,
8735
- "autoPopulate": true,
8736
- "nullable": true,
8737
- "mode": "optional",
8738
- "field": "tenantId",
8739
- "allowSuperAdminBypass": false
9326
+ "tenant_id": {
9327
+ "type": "UUID",
9328
+ "referenceKind": "tenantId",
9329
+ "notNull": false
9330
+ },
9331
+ "type": {
9332
+ "type": "TEXT",
9333
+ "notNull": false
9334
+ },
9335
+ "variant": {
9336
+ "type": "TEXT",
9337
+ "notNull": false
9338
+ },
9339
+ "file_key": {
9340
+ "type": "TEXT",
9341
+ "notNull": false
9342
+ },
9343
+ "author": {
9344
+ "type": "TEXT",
9345
+ "notNull": false
9346
+ },
9347
+ "name": {
9348
+ "type": "TEXT",
9349
+ "notNull": false,
9350
+ "default": ""
9351
+ },
9352
+ "title": {
9353
+ "type": "TEXT",
9354
+ "notNull": false
9355
+ },
9356
+ "description": {
9357
+ "type": "TEXT",
9358
+ "notNull": false
9359
+ },
9360
+ "body": {
9361
+ "type": "TEXT",
9362
+ "notNull": false
9363
+ },
9364
+ "body_format": {
9365
+ "type": "TEXT",
9366
+ "notNull": false
9367
+ },
9368
+ "publish_date": {
9369
+ "type": "TIMESTAMP",
9370
+ "notNull": false
9371
+ },
9372
+ "url": {
9373
+ "type": "TEXT",
9374
+ "notNull": false
9375
+ },
9376
+ "source": {
9377
+ "type": "TEXT",
9378
+ "notNull": false
9379
+ },
9380
+ "original_url": {
9381
+ "type": "TEXT",
9382
+ "notNull": false
9383
+ },
9384
+ "language": {
9385
+ "type": "TEXT",
9386
+ "notNull": false
9387
+ },
9388
+ "tags": {
9389
+ "type": "JSON",
9390
+ "notNull": false,
9391
+ "default": []
9392
+ },
9393
+ "category": {
9394
+ "type": "TEXT",
9395
+ "notNull": false
9396
+ },
9397
+ "status": {
9398
+ "type": "TEXT",
9399
+ "notNull": false,
9400
+ "default": "draft"
9401
+ },
9402
+ "state": {
9403
+ "type": "TEXT",
9404
+ "notNull": false,
9405
+ "default": "active"
9406
+ },
9407
+ "metadata": {
9408
+ "type": "JSON",
9409
+ "notNull": false,
9410
+ "default": {}
9411
+ },
9412
+ "thumbnail_asset_id": {
9413
+ "type": "UUID",
9414
+ "referenceKind": "crossPackageRef",
9415
+ "notNull": false
9416
+ },
9417
+ "fps": {
9418
+ "type": "INTEGER",
9419
+ "notNull": false,
9420
+ "default": 30
9421
+ },
9422
+ "width": {
9423
+ "type": "INTEGER",
9424
+ "notNull": false,
9425
+ "default": 1920
9426
+ },
9427
+ "height": {
9428
+ "type": "INTEGER",
9429
+ "notNull": false,
9430
+ "default": 1080
9431
+ },
9432
+ "duration_in_frames": {
9433
+ "type": "INTEGER",
9434
+ "notNull": false,
9435
+ "default": 0
9436
+ },
9437
+ "render_status": {
9438
+ "type": "TEXT",
9439
+ "notNull": false,
9440
+ "default": "draft"
9441
+ },
9442
+ "render_progress": {
9443
+ "type": "INTEGER",
9444
+ "notNull": false,
9445
+ "default": 0
9446
+ },
9447
+ "composition_id": {
9448
+ "type": "UUID",
9449
+ "referenceKind": "foreignKey",
9450
+ "notNull": false,
9451
+ "foreignKey": {
9452
+ "table": "contents",
9453
+ "column": "id",
9454
+ "onDelete": "NO ACTION",
9455
+ "onUpdate": "CASCADE"
8740
9456
  }
8741
- }
8742
- },
8743
- "name": {
8744
- "type": "text",
8745
- "required": false
8746
- },
8747
- "sourceUri": {
8748
- "type": "text",
8749
- "required": false
8750
- },
8751
- "mimeType": {
8752
- "type": "text",
8753
- "required": false
8754
- },
8755
- "description": {
8756
- "type": "text",
8757
- "required": false
8758
- },
8759
- "metadata": {
8760
- "type": "text",
8761
- "required": false
8762
- },
8763
- "version": {
8764
- "type": "integer",
8765
- "required": true,
8766
- "default": 1
8767
- },
8768
- "primaryVersionId": {
8769
- "type": "foreignKey",
8770
- "required": false,
8771
- "related": "Asset"
8772
- },
8773
- "typeSlug": {
8774
- "type": "text",
8775
- "required": false
8776
- },
8777
- "statusSlug": {
8778
- "type": "text",
8779
- "required": false
8780
- },
8781
- "ownerProfileId": {
8782
- "type": "crossPackageRef",
8783
- "required": false,
8784
- "related": "@happyvertical/smrt-profiles:Profile"
8785
- },
8786
- "sourceAssetId": {
8787
- "type": "foreignKey",
8788
- "required": false,
8789
- "related": "Asset"
8790
- },
8791
- "folderId": {
8792
- "type": "foreignKey",
8793
- "required": false,
8794
- "related": "Folder"
8795
- },
8796
- "sourceType": {
8797
- "type": "text",
8798
- "required": false
8799
- },
8800
- "externalId": {
8801
- "type": "text",
8802
- "required": false
9457
+ },
9458
+ "position": {
9459
+ "type": "INTEGER",
9460
+ "notNull": false,
9461
+ "default": 0
9462
+ },
9463
+ "transition_type": {
9464
+ "type": "TEXT",
9465
+ "notNull": false,
9466
+ "default": "none"
9467
+ },
9468
+ "transition_duration_frames": {
9469
+ "type": "INTEGER",
9470
+ "notNull": false,
9471
+ "default": 0
9472
+ },
9473
+ "sequence_id": {
9474
+ "type": "UUID",
9475
+ "referenceKind": "foreignKey",
9476
+ "notNull": false,
9477
+ "foreignKey": {
9478
+ "table": "contents",
9479
+ "column": "id",
9480
+ "onDelete": "NO ACTION",
9481
+ "onUpdate": "CASCADE"
9482
+ }
9483
+ },
9484
+ "scene_id": {
9485
+ "type": "UUID",
9486
+ "referenceKind": "foreignKey",
9487
+ "notNull": false,
9488
+ "foreignKey": {
9489
+ "table": "scenes",
9490
+ "column": "id",
9491
+ "onDelete": "NO ACTION",
9492
+ "onUpdate": "CASCADE"
9493
+ }
9494
+ },
9495
+ "trim_before_frames": {
9496
+ "type": "INTEGER",
9497
+ "notNull": false,
9498
+ "default": 0
9499
+ },
9500
+ "trim_after_frames": {
9501
+ "type": "INTEGER",
9502
+ "notNull": false,
9503
+ "default": 0
9504
+ },
9505
+ "script_text": {
9506
+ "type": "TEXT",
9507
+ "notNull": false,
9508
+ "default": ""
9509
+ },
9510
+ "script_word_count": {
9511
+ "type": "INTEGER",
9512
+ "notNull": false,
9513
+ "default": 0
9514
+ },
9515
+ "target_duration": {
9516
+ "type": "INTEGER",
9517
+ "notNull": false,
9518
+ "default": 30
9519
+ },
9520
+ "shot_status": {
9521
+ "type": "TEXT",
9522
+ "notNull": false,
9523
+ "default": "draft"
9524
+ },
9525
+ "progress": {
9526
+ "type": "INTEGER",
9527
+ "notNull": false,
9528
+ "default": 0
9529
+ },
9530
+ "error_message": {
9531
+ "type": "TEXT",
9532
+ "notNull": false
9533
+ },
9534
+ "status_message": {
9535
+ "type": "TEXT",
9536
+ "notNull": false
9537
+ },
9538
+ "video_metadata": {
9539
+ "type": "JSON",
9540
+ "notNull": false
9541
+ },
9542
+ "feed_source_id": {
9543
+ "type": "UUID",
9544
+ "referenceKind": "foreignKey",
9545
+ "notNull": false
9546
+ },
9547
+ "source_guid": {
9548
+ "type": "TEXT",
9549
+ "notNull": false
9550
+ },
9551
+ "source_name": {
9552
+ "type": "TEXT",
9553
+ "notNull": false
9554
+ },
9555
+ "source_homepage_url": {
9556
+ "type": "TEXT",
9557
+ "notNull": false
9558
+ },
9559
+ "external_url": {
9560
+ "type": "TEXT",
9561
+ "notNull": false
9562
+ },
9563
+ "original_published_at": {
9564
+ "type": "TIMESTAMP",
9565
+ "notNull": false
9566
+ },
9567
+ "dedupe_key": {
9568
+ "type": "TEXT",
9569
+ "notNull": false
9570
+ },
9571
+ "voice_profile_id": {
9572
+ "type": "UUID",
9573
+ "referenceKind": "foreignKey",
9574
+ "notNull": false
9575
+ },
9576
+ "source_text": {
9577
+ "type": "TEXT",
9578
+ "notNull": false,
9579
+ "default": ""
9580
+ },
9581
+ "audio_asset_id": {
9582
+ "type": "UUID",
9583
+ "referenceKind": "crossPackageRef",
9584
+ "notNull": false
9585
+ },
9586
+ "duration": {
9587
+ "type": "INTEGER",
9588
+ "notNull": false,
9589
+ "default": 0
9590
+ },
9591
+ "word_timings": {
9592
+ "type": "JSON",
9593
+ "notNull": false,
9594
+ "default": []
9595
+ },
9596
+ "audio_metadata": {
9597
+ "type": "JSON",
9598
+ "notNull": false
9599
+ }
8803
9600
  },
8804
- "externalRefs": {
8805
- "type": "text",
9601
+ "indexes": [
9602
+ {
9603
+ "name": "contents_slug_context_meta_type_idx",
9604
+ "columns": [
9605
+ "tenant_id",
9606
+ "slug",
9607
+ "context",
9608
+ "_meta_type"
9609
+ ],
9610
+ "unique": true,
9611
+ "nullsNotDistinct": true
9612
+ },
9613
+ {
9614
+ "name": "contents_meta_type_idx",
9615
+ "columns": [
9616
+ "_meta_type"
9617
+ ]
9618
+ },
9619
+ {
9620
+ "name": "contents_tenant_id_publish_date_idx",
9621
+ "columns": [
9622
+ "tenant_id",
9623
+ "publish_date"
9624
+ ]
9625
+ },
9626
+ {
9627
+ "name": "contents_tenant_id_created_at_idx",
9628
+ "columns": [
9629
+ "tenant_id",
9630
+ "created_at"
9631
+ ]
9632
+ },
9633
+ {
9634
+ "name": "contents_thumbnail_asset_id_idx",
9635
+ "columns": [
9636
+ "thumbnail_asset_id"
9637
+ ]
9638
+ },
9639
+ {
9640
+ "name": "contents_composition_id_idx",
9641
+ "columns": [
9642
+ "composition_id"
9643
+ ]
9644
+ },
9645
+ {
9646
+ "name": "contents_sequence_id_idx",
9647
+ "columns": [
9648
+ "sequence_id"
9649
+ ]
9650
+ },
9651
+ {
9652
+ "name": "contents_scene_id_idx",
9653
+ "columns": [
9654
+ "scene_id"
9655
+ ]
9656
+ },
9657
+ {
9658
+ "name": "contents_feed_source_id_idx",
9659
+ "columns": [
9660
+ "feed_source_id"
9661
+ ]
9662
+ },
9663
+ {
9664
+ "name": "contents_voice_profile_id_idx",
9665
+ "columns": [
9666
+ "voice_profile_id"
9667
+ ]
9668
+ },
9669
+ {
9670
+ "name": "contents_audio_asset_id_idx",
9671
+ "columns": [
9672
+ "audio_asset_id"
9673
+ ]
9674
+ }
9675
+ ],
9676
+ "version": "6a019937"
9677
+ }
9678
+ },
9679
+ "@happyvertical/smrt-video:VideoShotAsset": {
9680
+ "name": "videoshotasset",
9681
+ "className": "VideoShotAsset",
9682
+ "qualifiedName": "@happyvertical/smrt-video:VideoShotAsset",
9683
+ "collection": "assets",
9684
+ "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-shot-asset.ts",
9685
+ "packageName": "@happyvertical/smrt-video",
9686
+ "fields": {
9687
+ "created_at": {
9688
+ "type": "datetime",
8806
9689
  "required": false
8807
9690
  },
8808
- "createdAt": {
8809
- "type": "text",
9691
+ "updated_at": {
9692
+ "type": "datetime",
8810
9693
  "required": false
8811
9694
  },
8812
- "updatedAt": {
9695
+ "tenantId": {
8813
9696
  "type": "text",
8814
- "required": false
8815
- },
8816
- "videoShotId": {
8817
- "type": "foreignKey",
8818
9697
  "required": false,
8819
- "related": "VideoShot"
8820
- },
8821
- "role": {
9698
+ "_meta": {
9699
+ "sqlType": "UUID",
9700
+ "nullable": true,
9701
+ "__tenancy": {
9702
+ "isTenantIdField": true,
9703
+ "autoFilter": true,
9704
+ "required": false,
9705
+ "autoPopulate": true,
9706
+ "nullable": true,
9707
+ "mode": "optional",
9708
+ "field": "tenantId",
9709
+ "allowSuperAdminBypass": false
9710
+ }
9711
+ }
9712
+ },
9713
+ "name": {
9714
+ "type": "text",
9715
+ "required": false
9716
+ },
9717
+ "sourceUri": {
9718
+ "type": "text",
9719
+ "required": false
9720
+ },
9721
+ "mimeType": {
9722
+ "type": "text",
9723
+ "required": false
9724
+ },
9725
+ "description": {
9726
+ "type": "text",
9727
+ "required": false
9728
+ },
9729
+ "metadata": {
9730
+ "type": "text",
9731
+ "required": false
9732
+ },
9733
+ "version": {
9734
+ "type": "integer",
9735
+ "required": true,
9736
+ "default": 1
9737
+ },
9738
+ "primaryVersionId": {
9739
+ "type": "foreignKey",
9740
+ "required": false,
9741
+ "related": "Asset"
9742
+ },
9743
+ "typeSlug": {
9744
+ "type": "text",
9745
+ "required": false
9746
+ },
9747
+ "statusSlug": {
9748
+ "type": "text",
9749
+ "required": false
9750
+ },
9751
+ "ownerProfileId": {
9752
+ "type": "crossPackageRef",
9753
+ "required": false,
9754
+ "related": "@happyvertical/smrt-profiles:Profile"
9755
+ },
9756
+ "sourceAssetId": {
9757
+ "type": "foreignKey",
9758
+ "required": false,
9759
+ "related": "Asset"
9760
+ },
9761
+ "folderId": {
9762
+ "type": "foreignKey",
9763
+ "required": false,
9764
+ "related": "Folder"
9765
+ },
9766
+ "sourceType": {
9767
+ "type": "text",
9768
+ "required": false
9769
+ },
9770
+ "externalId": {
9771
+ "type": "text",
9772
+ "required": false
9773
+ },
9774
+ "externalRefs": {
9775
+ "type": "text",
9776
+ "required": false
9777
+ },
9778
+ "createdAt": {
9779
+ "type": "text",
9780
+ "required": false
9781
+ },
9782
+ "updatedAt": {
9783
+ "type": "text",
9784
+ "required": false
9785
+ },
9786
+ "videoShotId": {
9787
+ "type": "foreignKey",
9788
+ "required": false,
9789
+ "related": "VideoShot"
9790
+ },
9791
+ "role": {
8822
9792
  "type": "text",
8823
9793
  "required": false,
8824
9794
  "default": "video"
@@ -9237,7 +10207,8 @@
9237
10207
  "context",
9238
10208
  "_meta_type"
9239
10209
  ],
9240
- "unique": true
10210
+ "unique": true,
10211
+ "nullsNotDistinct": true
9241
10212
  },
9242
10213
  {
9243
10214
  "name": "assets_meta_type_idx",
@@ -9504,7 +10475,8 @@
9504
10475
  "context",
9505
10476
  "_meta_type"
9506
10477
  ],
9507
- "unique": true
10478
+ "unique": true,
10479
+ "nullsNotDistinct": true
9508
10480
  },
9509
10481
  {
9510
10482
  "name": "video_shot_characters_meta_type_idx",
@@ -9579,8 +10551,8 @@
9579
10551
  "exportName": "VideoShotCharacterCollection",
9580
10552
  "collectionExportName": "VideoShotCharacterCollectionCollection",
9581
10553
  "schema": {
9582
- "tableName": "video_shot_character_collections",
9583
- "ddl": "CREATE TABLE IF NOT EXISTS \"video_shot_character_collections\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
10554
+ "tableName": "video_shot_characters",
10555
+ "ddl": "CREATE TABLE IF NOT EXISTS \"video_shot_characters\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"video_shot_id\" UUID,\n \"character_id\" UUID,\n \"role\" TEXT DEFAULT 'primary',\n \"position\" INTEGER DEFAULT 0\n);",
9584
10556
  "columns": {
9585
10557
  "id": {
9586
10558
  "type": "UUID",
@@ -9597,6 +10569,14 @@
9597
10569
  "notNull": true,
9598
10570
  "default": ""
9599
10571
  },
10572
+ "_meta_type": {
10573
+ "type": "TEXT",
10574
+ "notNull": true
10575
+ },
10576
+ "_meta_data": {
10577
+ "type": "JSON",
10578
+ "notNull": false
10579
+ },
9600
10580
  "created_at": {
9601
10581
  "type": "TIMESTAMP",
9602
10582
  "notNull": true,
@@ -9606,25 +10586,84 @@
9606
10586
  "type": "TIMESTAMP",
9607
10587
  "notNull": true,
9608
10588
  "default": "current_timestamp"
10589
+ },
10590
+ "tenant_id": {
10591
+ "type": "UUID",
10592
+ "referenceKind": "tenantId",
10593
+ "notNull": false
10594
+ },
10595
+ "video_shot_id": {
10596
+ "type": "UUID",
10597
+ "referenceKind": "foreignKey",
10598
+ "notNull": false,
10599
+ "foreignKey": {
10600
+ "table": "contents",
10601
+ "column": "id",
10602
+ "onDelete": "NO ACTION",
10603
+ "onUpdate": "CASCADE"
10604
+ }
10605
+ },
10606
+ "character_id": {
10607
+ "type": "UUID",
10608
+ "referenceKind": "foreignKey",
10609
+ "notNull": false,
10610
+ "foreignKey": {
10611
+ "table": "characters",
10612
+ "column": "id",
10613
+ "onDelete": "NO ACTION",
10614
+ "onUpdate": "CASCADE"
10615
+ }
10616
+ },
10617
+ "role": {
10618
+ "type": "TEXT",
10619
+ "notNull": false,
10620
+ "default": "primary"
10621
+ },
10622
+ "position": {
10623
+ "type": "INTEGER",
10624
+ "notNull": false,
10625
+ "default": 0
9609
10626
  }
9610
10627
  },
9611
10628
  "indexes": [
9612
10629
  {
9613
- "name": "video_shot_character_collections_slug_context_idx",
10630
+ "name": "video_shot_characters_slug_context_meta_type_idx",
9614
10631
  "columns": [
10632
+ "tenant_id",
9615
10633
  "slug",
9616
- "context"
10634
+ "context",
10635
+ "_meta_type"
9617
10636
  ],
9618
- "unique": true
10637
+ "unique": true,
10638
+ "nullsNotDistinct": true
10639
+ },
10640
+ {
10641
+ "name": "video_shot_characters_meta_type_idx",
10642
+ "columns": [
10643
+ "_meta_type"
10644
+ ]
9619
10645
  },
9620
10646
  {
9621
- "name": "video_shot_character_collections_created_at_idx",
10647
+ "name": "video_shot_characters_tenant_id_created_at_idx",
9622
10648
  "columns": [
10649
+ "tenant_id",
9623
10650
  "created_at"
9624
10651
  ]
10652
+ },
10653
+ {
10654
+ "name": "video_shot_characters_video_shot_id_idx",
10655
+ "columns": [
10656
+ "video_shot_id"
10657
+ ]
10658
+ },
10659
+ {
10660
+ "name": "video_shot_characters_character_id_idx",
10661
+ "columns": [
10662
+ "character_id"
10663
+ ]
9625
10664
  }
9626
10665
  ],
9627
- "version": "13ff658b"
10666
+ "version": "4846f081"
9628
10667
  }
9629
10668
  },
9630
10669
  "@happyvertical/smrt-video:VideoShot": {
@@ -10636,165 +11675,608 @@
10636
11675
  "async": true,
10637
11676
  "parameters": [
10638
11677
  {
10639
- "name": "assetId",
10640
- "type": "string",
10641
- "optional": false
10642
- },
10643
- {
10644
- "name": "relationship",
11678
+ "name": "assetId",
11679
+ "type": "string",
11680
+ "optional": false
11681
+ },
11682
+ {
11683
+ "name": "relationship",
11684
+ "type": "string",
11685
+ "optional": true
11686
+ }
11687
+ ],
11688
+ "returnType": "Promise<void>",
11689
+ "isStatic": false,
11690
+ "isPublic": true
11691
+ },
11692
+ "getMetadata": {
11693
+ "name": "getMetadata",
11694
+ "async": false,
11695
+ "parameters": [],
11696
+ "returnType": "Record<string, unknown>",
11697
+ "isStatic": false,
11698
+ "isPublic": true
11699
+ },
11700
+ "setMetadata": {
11701
+ "name": "setMetadata",
11702
+ "async": false,
11703
+ "parameters": [
11704
+ {
11705
+ "name": "metadata",
11706
+ "type": "Record<string, unknown> | null | undefined",
11707
+ "optional": false,
11708
+ "unionBranches": [
11709
+ {
11710
+ "type": "Record<string, unknown>"
11711
+ },
11712
+ {
11713
+ "type": "null"
11714
+ },
11715
+ {
11716
+ "type": "undefined"
11717
+ }
11718
+ ]
11719
+ }
11720
+ ],
11721
+ "returnType": "void",
11722
+ "isStatic": false,
11723
+ "isPublic": true
11724
+ },
11725
+ "updateMetadata": {
11726
+ "name": "updateMetadata",
11727
+ "async": false,
11728
+ "parameters": [
11729
+ {
11730
+ "name": "patch",
11731
+ "type": "Partial<Record<string, unknown>>",
11732
+ "optional": false
11733
+ }
11734
+ ],
11735
+ "returnType": "Record<string, unknown>",
11736
+ "isStatic": false,
11737
+ "isPublic": true
11738
+ },
11739
+ "getThumbnail": {
11740
+ "name": "getThumbnail",
11741
+ "async": true,
11742
+ "parameters": [],
11743
+ "returnType": "Promise<Image | null>",
11744
+ "isStatic": false,
11745
+ "isPublic": true
11746
+ },
11747
+ "setThumbnail": {
11748
+ "name": "setThumbnail",
11749
+ "async": true,
11750
+ "parameters": [
11751
+ {
11752
+ "name": "image",
11753
+ "type": "Image",
11754
+ "optional": false
11755
+ }
11756
+ ],
11757
+ "returnType": "Promise<void>",
11758
+ "isStatic": false,
11759
+ "isPublic": true
11760
+ },
11761
+ "generateThumbnail": {
11762
+ "name": "generateThumbnail",
11763
+ "async": true,
11764
+ "parameters": [
11765
+ {
11766
+ "name": "options",
11767
+ "type": "ThumbnailOptions",
11768
+ "optional": false
11769
+ }
11770
+ ],
11771
+ "returnType": "Promise<Image>",
11772
+ "isStatic": false,
11773
+ "isPublic": true
11774
+ },
11775
+ "getAssetByRole": {
11776
+ "name": "getAssetByRole",
11777
+ "async": true,
11778
+ "parameters": [
11779
+ {
11780
+ "name": "role",
11781
+ "type": "VideoShotAssetRole",
11782
+ "optional": false
11783
+ }
11784
+ ],
11785
+ "returnType": "Promise<Asset | null>",
11786
+ "isStatic": false,
11787
+ "isPublic": true
11788
+ },
11789
+ "setScript": {
11790
+ "name": "setScript",
11791
+ "async": false,
11792
+ "parameters": [
11793
+ {
11794
+ "name": "text",
11795
+ "type": "string",
11796
+ "optional": false
11797
+ }
11798
+ ],
11799
+ "returnType": "void",
11800
+ "isStatic": false,
11801
+ "isPublic": true
11802
+ }
11803
+ },
11804
+ "decoratorConfig": {
11805
+ "tableStrategy": "sti",
11806
+ "api": {
11807
+ "include": [
11808
+ "list",
11809
+ "get",
11810
+ "create",
11811
+ "update",
11812
+ "delete"
11813
+ ]
11814
+ },
11815
+ "mcp": {
11816
+ "include": [
11817
+ "list",
11818
+ "get"
11819
+ ]
11820
+ },
11821
+ "cli": true,
11822
+ "tenantScoped": {
11823
+ "mode": "optional"
11824
+ },
11825
+ "tableName": "contents"
11826
+ },
11827
+ "extends": "Content",
11828
+ "exportName": "VideoShot",
11829
+ "collectionExportName": "VideoShotCollection",
11830
+ "validationRules": [
11831
+ {
11832
+ "field": "name",
11833
+ "rule": "required",
11834
+ "fieldType": "text"
11835
+ }
11836
+ ],
11837
+ "schema": {
11838
+ "tableName": "contents",
11839
+ "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"type\" TEXT,\n \"variant\" TEXT,\n \"file_key\" TEXT,\n \"author\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"title\" TEXT,\n \"description\" TEXT,\n \"body\" TEXT,\n \"body_format\" TEXT,\n \"publish_date\" TIMESTAMP,\n \"url\" TEXT,\n \"source\" TEXT,\n \"original_url\" TEXT,\n \"language\" TEXT,\n \"tags\" JSON DEFAULT '[]',\n \"category\" TEXT,\n \"status\" TEXT DEFAULT 'draft',\n \"state\" TEXT DEFAULT 'active',\n \"metadata\" JSON DEFAULT '{}',\n \"thumbnail_asset_id\" UUID,\n \"fps\" INTEGER DEFAULT 30,\n \"width\" INTEGER DEFAULT 1920,\n \"height\" INTEGER DEFAULT 1080,\n \"duration_in_frames\" INTEGER DEFAULT 0,\n \"render_status\" TEXT DEFAULT 'draft',\n \"render_progress\" INTEGER DEFAULT 0,\n \"composition_id\" UUID,\n \"position\" INTEGER DEFAULT 0,\n \"transition_type\" TEXT DEFAULT 'none',\n \"transition_duration_frames\" INTEGER DEFAULT 0,\n \"sequence_id\" UUID,\n \"scene_id\" UUID,\n \"trim_before_frames\" INTEGER DEFAULT 0,\n \"trim_after_frames\" INTEGER DEFAULT 0,\n \"script_text\" TEXT DEFAULT '',\n \"script_word_count\" INTEGER DEFAULT 0,\n \"target_duration\" INTEGER DEFAULT 30,\n \"shot_status\" TEXT DEFAULT 'draft',\n \"progress\" INTEGER DEFAULT 0,\n \"error_message\" TEXT,\n \"status_message\" TEXT,\n \"video_metadata\" JSON,\n \"feed_source_id\" UUID,\n \"source_guid\" TEXT,\n \"source_name\" TEXT,\n \"source_homepage_url\" TEXT,\n \"external_url\" TEXT,\n \"original_published_at\" TIMESTAMP,\n \"dedupe_key\" TEXT,\n \"voice_profile_id\" UUID,\n \"source_text\" TEXT DEFAULT '',\n \"audio_asset_id\" UUID,\n \"duration\" INTEGER DEFAULT 0,\n \"word_timings\" JSON DEFAULT '[]',\n \"audio_metadata\" JSON\n);",
11840
+ "columns": {
11841
+ "id": {
11842
+ "type": "UUID",
11843
+ "primaryKey": true,
11844
+ "referenceKind": "id",
11845
+ "notNull": true
11846
+ },
11847
+ "slug": {
11848
+ "type": "TEXT",
11849
+ "notNull": true
11850
+ },
11851
+ "context": {
11852
+ "type": "TEXT",
11853
+ "notNull": true,
11854
+ "default": ""
11855
+ },
11856
+ "_meta_type": {
11857
+ "type": "TEXT",
11858
+ "notNull": true
11859
+ },
11860
+ "_meta_data": {
11861
+ "type": "JSON",
11862
+ "notNull": false
11863
+ },
11864
+ "created_at": {
11865
+ "type": "TIMESTAMP",
11866
+ "notNull": true,
11867
+ "default": "current_timestamp"
11868
+ },
11869
+ "updated_at": {
11870
+ "type": "TIMESTAMP",
11871
+ "notNull": true,
11872
+ "default": "current_timestamp"
11873
+ },
11874
+ "tenant_id": {
11875
+ "type": "UUID",
11876
+ "referenceKind": "tenantId",
11877
+ "notNull": false
11878
+ },
11879
+ "type": {
11880
+ "type": "TEXT",
11881
+ "notNull": false
11882
+ },
11883
+ "variant": {
11884
+ "type": "TEXT",
11885
+ "notNull": false
11886
+ },
11887
+ "file_key": {
11888
+ "type": "TEXT",
11889
+ "notNull": false
11890
+ },
11891
+ "author": {
11892
+ "type": "TEXT",
11893
+ "notNull": false
11894
+ },
11895
+ "name": {
11896
+ "type": "TEXT",
11897
+ "notNull": false,
11898
+ "default": ""
11899
+ },
11900
+ "title": {
11901
+ "type": "TEXT",
11902
+ "notNull": false
11903
+ },
11904
+ "description": {
11905
+ "type": "TEXT",
11906
+ "notNull": false
11907
+ },
11908
+ "body": {
11909
+ "type": "TEXT",
11910
+ "notNull": false
11911
+ },
11912
+ "body_format": {
11913
+ "type": "TEXT",
11914
+ "notNull": false
11915
+ },
11916
+ "publish_date": {
11917
+ "type": "TIMESTAMP",
11918
+ "notNull": false
11919
+ },
11920
+ "url": {
11921
+ "type": "TEXT",
11922
+ "notNull": false
11923
+ },
11924
+ "source": {
11925
+ "type": "TEXT",
11926
+ "notNull": false
11927
+ },
11928
+ "original_url": {
11929
+ "type": "TEXT",
11930
+ "notNull": false
11931
+ },
11932
+ "language": {
11933
+ "type": "TEXT",
11934
+ "notNull": false
11935
+ },
11936
+ "tags": {
11937
+ "type": "JSON",
11938
+ "notNull": false,
11939
+ "default": []
11940
+ },
11941
+ "category": {
11942
+ "type": "TEXT",
11943
+ "notNull": false
11944
+ },
11945
+ "status": {
11946
+ "type": "TEXT",
11947
+ "notNull": false,
11948
+ "default": "draft"
11949
+ },
11950
+ "state": {
11951
+ "type": "TEXT",
11952
+ "notNull": false,
11953
+ "default": "active"
11954
+ },
11955
+ "metadata": {
11956
+ "type": "JSON",
11957
+ "notNull": false,
11958
+ "default": {}
11959
+ },
11960
+ "thumbnail_asset_id": {
11961
+ "type": "UUID",
11962
+ "referenceKind": "crossPackageRef",
11963
+ "notNull": false
11964
+ },
11965
+ "fps": {
11966
+ "type": "INTEGER",
11967
+ "notNull": false,
11968
+ "default": 30
11969
+ },
11970
+ "width": {
11971
+ "type": "INTEGER",
11972
+ "notNull": false,
11973
+ "default": 1920
11974
+ },
11975
+ "height": {
11976
+ "type": "INTEGER",
11977
+ "notNull": false,
11978
+ "default": 1080
11979
+ },
11980
+ "duration_in_frames": {
11981
+ "type": "INTEGER",
11982
+ "notNull": false,
11983
+ "default": 0
11984
+ },
11985
+ "render_status": {
11986
+ "type": "TEXT",
11987
+ "notNull": false,
11988
+ "default": "draft"
11989
+ },
11990
+ "render_progress": {
11991
+ "type": "INTEGER",
11992
+ "notNull": false,
11993
+ "default": 0
11994
+ },
11995
+ "composition_id": {
11996
+ "type": "UUID",
11997
+ "referenceKind": "foreignKey",
11998
+ "notNull": false,
11999
+ "foreignKey": {
12000
+ "table": "contents",
12001
+ "column": "id",
12002
+ "onDelete": "NO ACTION",
12003
+ "onUpdate": "CASCADE"
12004
+ }
12005
+ },
12006
+ "position": {
12007
+ "type": "INTEGER",
12008
+ "notNull": false,
12009
+ "default": 0
12010
+ },
12011
+ "transition_type": {
12012
+ "type": "TEXT",
12013
+ "notNull": false,
12014
+ "default": "none"
12015
+ },
12016
+ "transition_duration_frames": {
12017
+ "type": "INTEGER",
12018
+ "notNull": false,
12019
+ "default": 0
12020
+ },
12021
+ "sequence_id": {
12022
+ "type": "UUID",
12023
+ "referenceKind": "foreignKey",
12024
+ "notNull": false,
12025
+ "foreignKey": {
12026
+ "table": "contents",
12027
+ "column": "id",
12028
+ "onDelete": "NO ACTION",
12029
+ "onUpdate": "CASCADE"
12030
+ }
12031
+ },
12032
+ "scene_id": {
12033
+ "type": "UUID",
12034
+ "referenceKind": "foreignKey",
12035
+ "notNull": false,
12036
+ "foreignKey": {
12037
+ "table": "scenes",
12038
+ "column": "id",
12039
+ "onDelete": "NO ACTION",
12040
+ "onUpdate": "CASCADE"
12041
+ }
12042
+ },
12043
+ "trim_before_frames": {
12044
+ "type": "INTEGER",
12045
+ "notNull": false,
12046
+ "default": 0
12047
+ },
12048
+ "trim_after_frames": {
12049
+ "type": "INTEGER",
12050
+ "notNull": false,
12051
+ "default": 0
12052
+ },
12053
+ "script_text": {
12054
+ "type": "TEXT",
12055
+ "notNull": false,
12056
+ "default": ""
12057
+ },
12058
+ "script_word_count": {
12059
+ "type": "INTEGER",
12060
+ "notNull": false,
12061
+ "default": 0
12062
+ },
12063
+ "target_duration": {
12064
+ "type": "INTEGER",
12065
+ "notNull": false,
12066
+ "default": 30
12067
+ },
12068
+ "shot_status": {
12069
+ "type": "TEXT",
12070
+ "notNull": false,
12071
+ "default": "draft"
12072
+ },
12073
+ "progress": {
12074
+ "type": "INTEGER",
12075
+ "notNull": false,
12076
+ "default": 0
12077
+ },
12078
+ "error_message": {
12079
+ "type": "TEXT",
12080
+ "notNull": false
12081
+ },
12082
+ "status_message": {
12083
+ "type": "TEXT",
12084
+ "notNull": false
12085
+ },
12086
+ "video_metadata": {
12087
+ "type": "JSON",
12088
+ "notNull": false
12089
+ },
12090
+ "feed_source_id": {
12091
+ "type": "UUID",
12092
+ "referenceKind": "foreignKey",
12093
+ "notNull": false
12094
+ },
12095
+ "source_guid": {
12096
+ "type": "TEXT",
12097
+ "notNull": false
12098
+ },
12099
+ "source_name": {
12100
+ "type": "TEXT",
12101
+ "notNull": false
12102
+ },
12103
+ "source_homepage_url": {
12104
+ "type": "TEXT",
12105
+ "notNull": false
12106
+ },
12107
+ "external_url": {
12108
+ "type": "TEXT",
12109
+ "notNull": false
12110
+ },
12111
+ "original_published_at": {
12112
+ "type": "TIMESTAMP",
12113
+ "notNull": false
12114
+ },
12115
+ "dedupe_key": {
12116
+ "type": "TEXT",
12117
+ "notNull": false
12118
+ },
12119
+ "voice_profile_id": {
12120
+ "type": "UUID",
12121
+ "referenceKind": "foreignKey",
12122
+ "notNull": false
12123
+ },
12124
+ "source_text": {
12125
+ "type": "TEXT",
12126
+ "notNull": false,
12127
+ "default": ""
12128
+ },
12129
+ "audio_asset_id": {
12130
+ "type": "UUID",
12131
+ "referenceKind": "crossPackageRef",
12132
+ "notNull": false
12133
+ },
12134
+ "duration": {
12135
+ "type": "INTEGER",
12136
+ "notNull": false,
12137
+ "default": 0
12138
+ },
12139
+ "word_timings": {
12140
+ "type": "JSON",
12141
+ "notNull": false,
12142
+ "default": []
12143
+ },
12144
+ "audio_metadata": {
12145
+ "type": "JSON",
12146
+ "notNull": false
12147
+ }
12148
+ },
12149
+ "indexes": [
12150
+ {
12151
+ "name": "contents_slug_context_meta_type_idx",
12152
+ "columns": [
12153
+ "tenant_id",
12154
+ "slug",
12155
+ "context",
12156
+ "_meta_type"
12157
+ ],
12158
+ "unique": true,
12159
+ "nullsNotDistinct": true
12160
+ },
12161
+ {
12162
+ "name": "contents_meta_type_idx",
12163
+ "columns": [
12164
+ "_meta_type"
12165
+ ]
12166
+ },
12167
+ {
12168
+ "name": "contents_tenant_id_publish_date_idx",
12169
+ "columns": [
12170
+ "tenant_id",
12171
+ "publish_date"
12172
+ ]
12173
+ },
12174
+ {
12175
+ "name": "contents_tenant_id_created_at_idx",
12176
+ "columns": [
12177
+ "tenant_id",
12178
+ "created_at"
12179
+ ]
12180
+ },
12181
+ {
12182
+ "name": "contents_thumbnail_asset_id_idx",
12183
+ "columns": [
12184
+ "thumbnail_asset_id"
12185
+ ]
12186
+ },
12187
+ {
12188
+ "name": "contents_composition_id_idx",
12189
+ "columns": [
12190
+ "composition_id"
12191
+ ]
12192
+ },
12193
+ {
12194
+ "name": "contents_sequence_id_idx",
12195
+ "columns": [
12196
+ "sequence_id"
12197
+ ]
12198
+ },
12199
+ {
12200
+ "name": "contents_scene_id_idx",
12201
+ "columns": [
12202
+ "scene_id"
12203
+ ]
12204
+ },
12205
+ {
12206
+ "name": "contents_feed_source_id_idx",
12207
+ "columns": [
12208
+ "feed_source_id"
12209
+ ]
12210
+ },
12211
+ {
12212
+ "name": "contents_voice_profile_id_idx",
12213
+ "columns": [
12214
+ "voice_profile_id"
12215
+ ]
12216
+ },
12217
+ {
12218
+ "name": "contents_audio_asset_id_idx",
12219
+ "columns": [
12220
+ "audio_asset_id"
12221
+ ]
12222
+ }
12223
+ ],
12224
+ "version": "08a96b6e"
12225
+ }
12226
+ },
12227
+ "@happyvertical/smrt-video:VideoShotCollection": {
12228
+ "name": "videoshotcollection",
12229
+ "className": "VideoShotCollection",
12230
+ "qualifiedName": "@happyvertical/smrt-video:VideoShotCollection",
12231
+ "collection": "contents",
12232
+ "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-shots.ts",
12233
+ "packageName": "@happyvertical/smrt-video",
12234
+ "fields": {},
12235
+ "methods": {
12236
+ "findBySequence": {
12237
+ "name": "findBySequence",
12238
+ "async": true,
12239
+ "parameters": [
12240
+ {
12241
+ "name": "sequenceId",
10645
12242
  "type": "string",
10646
- "optional": true
10647
- }
10648
- ],
10649
- "returnType": "Promise<void>",
10650
- "isStatic": false,
10651
- "isPublic": true
10652
- },
10653
- "getMetadata": {
10654
- "name": "getMetadata",
10655
- "async": false,
10656
- "parameters": [],
10657
- "returnType": "Record<string, unknown>",
10658
- "isStatic": false,
10659
- "isPublic": true
10660
- },
10661
- "setMetadata": {
10662
- "name": "setMetadata",
10663
- "async": false,
10664
- "parameters": [
10665
- {
10666
- "name": "metadata",
10667
- "type": "Record<string, unknown> | null | undefined",
10668
- "optional": false,
10669
- "unionBranches": [
10670
- {
10671
- "type": "Record<string, unknown>"
10672
- },
10673
- {
10674
- "type": "null"
10675
- },
10676
- {
10677
- "type": "undefined"
10678
- }
10679
- ]
10680
- }
10681
- ],
10682
- "returnType": "void",
10683
- "isStatic": false,
10684
- "isPublic": true
10685
- },
10686
- "updateMetadata": {
10687
- "name": "updateMetadata",
10688
- "async": false,
10689
- "parameters": [
10690
- {
10691
- "name": "patch",
10692
- "type": "Partial<Record<string, unknown>>",
10693
- "optional": false
10694
- }
10695
- ],
10696
- "returnType": "Record<string, unknown>",
10697
- "isStatic": false,
10698
- "isPublic": true
10699
- },
10700
- "getThumbnail": {
10701
- "name": "getThumbnail",
10702
- "async": true,
10703
- "parameters": [],
10704
- "returnType": "Promise<Image | null>",
10705
- "isStatic": false,
10706
- "isPublic": true
10707
- },
10708
- "setThumbnail": {
10709
- "name": "setThumbnail",
10710
- "async": true,
10711
- "parameters": [
10712
- {
10713
- "name": "image",
10714
- "type": "Image",
10715
12243
  "optional": false
10716
12244
  }
10717
12245
  ],
10718
- "returnType": "Promise<void>",
12246
+ "returnType": "Promise<VideoShot[]>",
10719
12247
  "isStatic": false,
10720
12248
  "isPublic": true
10721
12249
  },
10722
- "generateThumbnail": {
10723
- "name": "generateThumbnail",
12250
+ "findByStatus": {
12251
+ "name": "findByStatus",
10724
12252
  "async": true,
10725
12253
  "parameters": [
10726
12254
  {
10727
- "name": "options",
10728
- "type": "ThumbnailOptions",
12255
+ "name": "shotStatus",
12256
+ "type": "VideoShotStatus",
10729
12257
  "optional": false
10730
12258
  }
10731
12259
  ],
10732
- "returnType": "Promise<Image>",
12260
+ "returnType": "Promise<VideoShot[]>",
10733
12261
  "isStatic": false,
10734
12262
  "isPublic": true
10735
12263
  },
10736
- "getAssetByRole": {
10737
- "name": "getAssetByRole",
12264
+ "findStandalone": {
12265
+ "name": "findStandalone",
10738
12266
  "async": true,
10739
- "parameters": [
10740
- {
10741
- "name": "role",
10742
- "type": "VideoShotAssetRole",
10743
- "optional": false
10744
- }
10745
- ],
10746
- "returnType": "Promise<Asset | null>",
10747
- "isStatic": false,
10748
- "isPublic": true
10749
- },
10750
- "setScript": {
10751
- "name": "setScript",
10752
- "async": false,
10753
- "parameters": [
10754
- {
10755
- "name": "text",
10756
- "type": "string",
10757
- "optional": false
10758
- }
10759
- ],
10760
- "returnType": "void",
12267
+ "parameters": [],
12268
+ "returnType": "Promise<VideoShot[]>",
10761
12269
  "isStatic": false,
10762
12270
  "isPublic": true
10763
12271
  }
10764
12272
  },
10765
12273
  "decoratorConfig": {
10766
- "tableStrategy": "sti",
10767
- "api": {
10768
- "include": [
10769
- "list",
10770
- "get",
10771
- "create",
10772
- "update",
10773
- "delete"
10774
- ]
10775
- },
10776
- "mcp": {
10777
- "include": [
10778
- "list",
10779
- "get"
10780
- ]
10781
- },
10782
- "cli": true,
10783
- "tenantScoped": {
10784
- "mode": "optional"
10785
- },
10786
12274
  "tableName": "contents"
10787
12275
  },
10788
- "extends": "Content",
10789
- "exportName": "VideoShot",
10790
- "collectionExportName": "VideoShotCollection",
10791
- "validationRules": [
10792
- {
10793
- "field": "name",
10794
- "rule": "required",
10795
- "fieldType": "text"
10796
- }
10797
- ],
12276
+ "extends": "SmrtCollection",
12277
+ "extendsTypeArg": "VideoShot",
12278
+ "exportName": "VideoShotCollection",
12279
+ "collectionExportName": "VideoShotCollectionCollection",
10798
12280
  "schema": {
10799
12281
  "tableName": "contents",
10800
12282
  "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" UUID,\n \"type\" TEXT,\n \"variant\" TEXT,\n \"file_key\" TEXT,\n \"author\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"title\" TEXT,\n \"description\" TEXT,\n \"body\" TEXT,\n \"body_format\" TEXT,\n \"publish_date\" TIMESTAMP,\n \"url\" TEXT,\n \"source\" TEXT,\n \"original_url\" TEXT,\n \"language\" TEXT,\n \"tags\" JSON DEFAULT '[]',\n \"category\" TEXT,\n \"status\" TEXT DEFAULT 'draft',\n \"state\" TEXT DEFAULT 'active',\n \"metadata\" JSON DEFAULT '{}',\n \"thumbnail_asset_id\" UUID,\n \"fps\" INTEGER DEFAULT 30,\n \"width\" INTEGER DEFAULT 1920,\n \"height\" INTEGER DEFAULT 1080,\n \"duration_in_frames\" INTEGER DEFAULT 0,\n \"render_status\" TEXT DEFAULT 'draft',\n \"render_progress\" INTEGER DEFAULT 0,\n \"composition_id\" UUID,\n \"position\" INTEGER DEFAULT 0,\n \"transition_type\" TEXT DEFAULT 'none',\n \"transition_duration_frames\" INTEGER DEFAULT 0,\n \"sequence_id\" UUID,\n \"scene_id\" UUID,\n \"trim_before_frames\" INTEGER DEFAULT 0,\n \"trim_after_frames\" INTEGER DEFAULT 0,\n \"script_text\" TEXT DEFAULT '',\n \"script_word_count\" INTEGER DEFAULT 0,\n \"target_duration\" INTEGER DEFAULT 30,\n \"shot_status\" TEXT DEFAULT 'draft',\n \"progress\" INTEGER DEFAULT 0,\n \"error_message\" TEXT,\n \"status_message\" TEXT,\n \"video_metadata\" JSON,\n \"feed_source_id\" UUID,\n \"source_guid\" TEXT,\n \"source_name\" TEXT,\n \"source_homepage_url\" TEXT,\n \"external_url\" TEXT,\n \"original_published_at\" TIMESTAMP,\n \"dedupe_key\" TEXT,\n \"voice_profile_id\" UUID,\n \"source_text\" TEXT DEFAULT '',\n \"audio_asset_id\" UUID,\n \"duration\" INTEGER DEFAULT 0,\n \"word_timings\" JSON DEFAULT '[]',\n \"audio_metadata\" JSON\n);",
@@ -11116,7 +12598,8 @@
11116
12598
  "context",
11117
12599
  "_meta_type"
11118
12600
  ],
11119
- "unique": true
12601
+ "unique": true,
12602
+ "nullsNotDistinct": true
11120
12603
  },
11121
12604
  {
11122
12605
  "name": "contents_meta_type_idx",
@@ -11184,108 +12667,6 @@
11184
12667
  "version": "08a96b6e"
11185
12668
  }
11186
12669
  },
11187
- "@happyvertical/smrt-video:VideoShotCollection": {
11188
- "name": "videoshotcollection",
11189
- "className": "VideoShotCollection",
11190
- "qualifiedName": "@happyvertical/smrt-video:VideoShotCollection",
11191
- "collection": "contents",
11192
- "filePath": "/home/runner/work/smrt/smrt/packages/video/src/video-shots.ts",
11193
- "packageName": "@happyvertical/smrt-video",
11194
- "fields": {},
11195
- "methods": {
11196
- "findBySequence": {
11197
- "name": "findBySequence",
11198
- "async": true,
11199
- "parameters": [
11200
- {
11201
- "name": "sequenceId",
11202
- "type": "string",
11203
- "optional": false
11204
- }
11205
- ],
11206
- "returnType": "Promise<VideoShot[]>",
11207
- "isStatic": false,
11208
- "isPublic": true
11209
- },
11210
- "findByStatus": {
11211
- "name": "findByStatus",
11212
- "async": true,
11213
- "parameters": [
11214
- {
11215
- "name": "shotStatus",
11216
- "type": "VideoShotStatus",
11217
- "optional": false
11218
- }
11219
- ],
11220
- "returnType": "Promise<VideoShot[]>",
11221
- "isStatic": false,
11222
- "isPublic": true
11223
- },
11224
- "findStandalone": {
11225
- "name": "findStandalone",
11226
- "async": true,
11227
- "parameters": [],
11228
- "returnType": "Promise<VideoShot[]>",
11229
- "isStatic": false,
11230
- "isPublic": true
11231
- }
11232
- },
11233
- "decoratorConfig": {
11234
- "tableName": "contents"
11235
- },
11236
- "extends": "SmrtCollection",
11237
- "extendsTypeArg": "VideoShot",
11238
- "exportName": "VideoShotCollection",
11239
- "collectionExportName": "VideoShotCollectionCollection",
11240
- "schema": {
11241
- "tableName": "contents",
11242
- "ddl": "CREATE TABLE IF NOT EXISTS \"contents\" (\n \"id\" UUID PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp\n);",
11243
- "columns": {
11244
- "id": {
11245
- "type": "UUID",
11246
- "primaryKey": true,
11247
- "referenceKind": "id",
11248
- "notNull": true
11249
- },
11250
- "slug": {
11251
- "type": "TEXT",
11252
- "notNull": true
11253
- },
11254
- "context": {
11255
- "type": "TEXT",
11256
- "notNull": true,
11257
- "default": ""
11258
- },
11259
- "created_at": {
11260
- "type": "TIMESTAMP",
11261
- "notNull": true,
11262
- "default": "current_timestamp"
11263
- },
11264
- "updated_at": {
11265
- "type": "TIMESTAMP",
11266
- "notNull": true,
11267
- "default": "current_timestamp"
11268
- }
11269
- },
11270
- "indexes": [
11271
- {
11272
- "name": "contents_slug_context_idx",
11273
- "columns": [
11274
- "slug",
11275
- "context"
11276
- ],
11277
- "unique": true
11278
- },
11279
- {
11280
- "name": "contents_created_at_idx",
11281
- "columns": [
11282
- "created_at"
11283
- ]
11284
- }
11285
- ],
11286
- "version": "282633f1"
11287
- }
11288
- },
11289
12670
  "@happyvertical/smrt-video:VideoWorkflow": {
11290
12671
  "name": "videoworkflow",
11291
12672
  "className": "VideoWorkflow",
@@ -11495,7 +12876,8 @@
11495
12876
  "context",
11496
12877
  "_meta_type"
11497
12878
  ],
11498
- "unique": true
12879
+ "unique": true,
12880
+ "nullsNotDistinct": true
11499
12881
  },
11500
12882
  {
11501
12883
  "name": "video_workflows_meta_type_idx",