diff --git a/catalog/utilities/media_props_gen/column_parser.py b/catalog/utilities/media_props_gen/column_parser.py index f9b6673c2d2..69b74024ada 100644 --- a/catalog/utilities/media_props_gen/column_parser.py +++ b/catalog/utilities/media_props_gen/column_parser.py @@ -15,7 +15,7 @@ def format_python_column( ) -> str: col_type = python_column.pop("python_type") start, end = python_column_lines[col_type] - python_column_string = f"[{col_type}]({COLUMNS_URL}#L{start}-L{end})(" + python_column_string = f"[{col_type}]({COLUMNS_URL}#L{start}-L{end}) (" col_name = python_column.pop("name") if col_name != column_db_name: python_column_string += f"name='{col_name}', " diff --git a/catalog/utilities/media_props_gen/generate_media_properties.py b/catalog/utilities/media_props_gen/generate_media_properties.py index 7573b993862..74bb6347d5c 100644 --- a/catalog/utilities/media_props_gen/generate_media_properties.py +++ b/catalog/utilities/media_props_gen/generate_media_properties.py @@ -140,7 +140,7 @@ def generate_media_props_table(media_properties) -> str: else f"{field_sql.datatype} {field_sql.constraint}" ) table += ( - f"| {field_name} | {field_sql.nullable} | " + f"| `{field_name}` | {field_sql.nullable} | " f"{field_db_type} | {field.get('python_column', '')} | " f"{media_docs.get(field_name) or ''}\n" ) diff --git a/documentation/meta/media_properties.md b/documentation/meta/media_properties.md index 9e230cfdafb..45f88d66b9e 100644 --- a/documentation/meta/media_properties.md +++ b/documentation/meta/media_properties.md @@ -10,67 +10,67 @@ materialized view. ## Image Properties -| DB Field | DB Nullable | DB Type | Python Column | Description | -| ----------------------- | ----------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | -| identifier | True | uuid | [UUIDColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L500-L517)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| created_on | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=False, required=True, upsert_strategy=no_change) | -| updated_on | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=False, required=True, upsert_strategy=newest_non_null) | -| ingestion_type | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| provider | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| source | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| foreign_identifier | True | character varying (3000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=3000, truncate=False)) | -| foreign_landing_url | True | character varying (1000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=True, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=1000)) | -| url | False | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=False, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | -| thumbnail | True | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(name='thumbnail_url', nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | -| width | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| height | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| filesize | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| license | False | character varying (50) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(name='license\_', nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=50, truncate=False)) | -| license_version | True | character varying (25) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=25, truncate=False)) | -| creator | True | character varying (2000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=2000, truncate=True)) | -| creator_url | True | character varying (2000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=2000)) | -| title | True | character varying (5000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=5000, truncate=True)) | -| meta_data | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| tags | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | -| watermarked | True | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| last_synced_with_source | True | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| removed_from_source | False | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385)(nullable=False, required=True, upsert_strategy=false) | -| filetype | True | character varying (5) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(truncate=False, size=5)) | -| category | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| standardized_popularity | True | double precision | [CalculatedColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L259-L337)(nullable=True, required=False, upsert_strategy=newest_non_null) | +| DB Field | DB Nullable | DB Type | Python Column | Description | +| ------------------------- | ----------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | +| `identifier` | True | uuid | [UUIDColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L500-L517) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `created_on` | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=False, required=True, upsert_strategy=no_change) | +| `updated_on` | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=False, required=True, upsert_strategy=newest_non_null) | +| `ingestion_type` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `provider` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `source` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `foreign_identifier` | True | character varying (3000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=3000, truncate=False)) | +| `foreign_landing_url` | True | character varying (1000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=True, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=1000)) | +| `url` | False | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=False, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | +| `thumbnail` | True | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (name='thumbnail_url', nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | +| `width` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `height` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `filesize` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `license` | False | character varying (50) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (name='license\_', nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=50, truncate=False)) | +| `license_version` | True | character varying (25) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=25, truncate=False)) | +| `creator` | True | character varying (2000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=2000, truncate=True)) | +| `creator_url` | True | character varying (2000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=2000)) | +| `title` | True | character varying (5000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=5000, truncate=True)) | +| `meta_data` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `tags` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | +| `watermarked` | True | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `last_synced_with_source` | True | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `removed_from_source` | False | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385) (nullable=False, required=True, upsert_strategy=false) | +| `filetype` | True | character varying (5) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(truncate=False, size=5)) | +| `category` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `standardized_popularity` | True | double precision | [CalculatedColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L259-L337) (nullable=True, required=False, upsert_strategy=newest_non_null) | ## Audio Properties -| DB Field | DB Nullable | DB Type | Python Column | Description | -| ----------------------- | ----------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | -| identifier | True | uuid | [UUIDColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L500-L517)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| created_on | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=False, required=True, upsert_strategy=no_change) | -| updated_on | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=False, required=True, upsert_strategy=newest_non_null) | -| ingestion_type | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| provider | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| source | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| foreign_identifier | True | character varying (3000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=3000, truncate=False)) | -| foreign_landing_url | True | character varying (1000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=True, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=1000)) | -| url | False | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=False, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | -| thumbnail | True | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(name='thumbnail_url', nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | -| filetype | True | character varying (5) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(truncate=False, size=5)) | -| duration | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| bit_rate | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| sample_rate | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| category | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | -| genres | True | array of character varying (80) | [ArrayColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L599-L651)(nullable=True, required=False, upsert_strategy=newest_non_null, ArrayColumnProps(base_column=StringColumn(name=genre, required=False, size=80, truncate=False))) | -| audio_set | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| set_position | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| alt_files | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | -| filesize | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| license | False | character varying (50) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(name='license\_', nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=50, truncate=False)) | -| license_version | True | character varying (25) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=25, truncate=False)) | -| creator | True | character varying (2000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=2000, truncate=True)) | -| creator_url | True | character varying (2000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596)(nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=2000)) | -| title | True | character varying (5000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497)(nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=5000, truncate=True)) | -| meta_data | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| tags | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454)(nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | -| watermarked | True | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| last_synced_with_source | True | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547)(nullable=True, required=False, upsert_strategy=newest_non_null) | -| removed_from_source | False | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385)(nullable=False, required=True, upsert_strategy=false) | -| standardized_popularity | True | double precision | [CalculatedColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L259-L337)(nullable=True, required=False, upsert_strategy=newest_non_null) | +| DB Field | DB Nullable | DB Type | Python Column | Description | +| ------------------------- | ----------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | +| `identifier` | True | uuid | [UUIDColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L500-L517) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `created_on` | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=False, required=True, upsert_strategy=no_change) | +| `updated_on` | False | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=False, required=True, upsert_strategy=newest_non_null) | +| `ingestion_type` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `provider` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `source` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `foreign_identifier` | True | character varying (3000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=3000, truncate=False)) | +| `foreign_landing_url` | True | character varying (1000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=True, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=1000)) | +| `url` | False | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=False, required=True, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | +| `thumbnail` | True | character varying (3000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (name='thumbnail_url', nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=3000)) | +| `filetype` | True | character varying (5) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(truncate=False, size=5)) | +| `duration` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `bit_rate` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `sample_rate` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `category` | True | character varying (80) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=80, truncate=False)) | +| `genres` | True | array of character varying (80) | [ArrayColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L599-L651) (nullable=True, required=False, upsert_strategy=newest_non_null, ArrayColumnProps(base_column=StringColumn(name=genre, required=False, size=80, truncate=False))) | +| `audio_set` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `set_position` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `alt_files` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | +| `filesize` | True | integer | [IntegerColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L216-L256) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `license` | False | character varying (50) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (name='license\_', nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=50, truncate=False)) | +| `license_version` | True | character varying (25) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=False, required=True, upsert_strategy=newest_non_null, StringColumnProps(size=25, truncate=False)) | +| `creator` | True | character varying (2000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=2000, truncate=True)) | +| `creator_url` | True | character varying (2000) | [URLColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L550-L596) (nullable=True, required=False, upsert_strategy=newest_non_null, URLColumnProps(size=2000)) | +| `title` | True | character varying (5000) | [StringColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L457-L497) (nullable=True, required=False, upsert_strategy=newest_non_null, StringColumnProps(size=5000, truncate=True)) | +| `meta_data` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `tags` | True | jsonb | [JSONColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L388-L454) (nullable=True, required=False, upsert_strategy=merge_jsonb_arrays) | +| `watermarked` | True | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `last_synced_with_source` | True | timestamp with time zone | [TimestampColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L520-L547) (nullable=True, required=False, upsert_strategy=newest_non_null) | +| `removed_from_source` | False | boolean | [BooleanColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L340-L385) (nullable=False, required=True, upsert_strategy=false) | +| `standardized_popularity` | True | double precision | [CalculatedColumn](https://github.com/WordPress/openverse/blob/main/catalog/dags/common/storage/columns.py#L259-L337) (nullable=True, required=False, upsert_strategy=newest_non_null) |