From 7281ce67e9d9dcfbf914c552adec2169500e93cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20K=C3=BCnzel?= <simonk@fsmpi.rwth-aachen.de> Date: Thu, 10 Oct 2024 23:12:41 +0200 Subject: [PATCH] Fix medium db mapper --- src/videoag_common/objects/medium.py | 40 ++++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/videoag_common/objects/medium.py b/src/videoag_common/objects/medium.py index c79916e..e643c1b 100644 --- a/src/videoag_common/objects/medium.py +++ b/src/videoag_common/objects/medium.py @@ -74,9 +74,10 @@ class SourceMedium(DeletableApiObject, Base): data_notes="Only calculated once this is sorted" ) ) - metadata: Mapped[JsonTypes] = api_mapped( + # metadata is reserved + file_metadata: Mapped[JsonTypes] = api_mapped( mapped_column(sql.JSON, nullable=True), - ApiDataField( + ApiJsonField( include_in_data=True, # See source file sorter for contents data_notes="Only calculated once this is sorted. There are no guarantees regarding the content" @@ -195,8 +196,8 @@ class TargetMedium(DeletableApiObject, Base): return options -class FileTargetMedium(TargetMedium): - file_path: Mapped[str] = mapped_column(String(collation=STRING_COLLATION), nullable=True, index=True) # TODO move? +class FileMedium(ApiObject): + file_path: Mapped[str] = mapped_column(String(collation=STRING_COLLATION), nullable=True, use_existing_column=True, index=True) # TODO move? @api_include_in_data( type_id="string", @@ -212,81 +213,80 @@ class FileTargetMedium(TargetMedium): return f"{self.process_target_id}.{self.id}" -class SingleAudioContainingMedium(TargetMedium): +class SingleAudioContainingMedium(ApiObject): audio_sample_rate: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True, - help="In Hz" + data_notes="In Hz" ) ) audio_channel_count: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) -class SingleVideoContainingMedium(TargetMedium): +class SingleVideoContainingMedium(ApiObject): video_vertical_resolution: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) video_horizontal_resolution: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) video_frame_rate_numerator: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) video_frame_rate_denominator: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) -class PlainVideoTargetMedium(FileTargetMedium, SingleVideoContainingMedium, SingleAudioContainingMedium): +class PlainVideoTargetMedium(TargetMedium, FileMedium, SingleVideoContainingMedium, SingleAudioContainingMedium): __tablename__ = None # Prevent our own base from adding a table name. This should be a single-table inheritance __mapper_args__ = { "polymorphic_identity": TargetMediumType.PLAIN_VIDEO } - duration_sec: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) + # TODO check vars not null (except audio) -class PlainAudioTargetMedium(FileTargetMedium, SingleAudioContainingMedium): +class PlainAudioTargetMedium(TargetMedium, FileMedium, SingleAudioContainingMedium): __tablename__ = None # Prevent our own base from adding a table name. This should be a single-table inheritance __mapper_args__ = { "polymorphic_identity": TargetMediumType.PLAIN_AUDIO } - duration_sec: Mapped[int] = api_mapped( - mapped_column(nullable=True), + mapped_column(nullable=True, use_existing_column=True), ApiIntegerField( include_in_data=True ) ) -class ThumbnailTargetMedium(FileTargetMedium): +class ThumbnailTargetMedium(FileMedium): __tablename__ = None # Prevent our own base from adding a table name. This should be a single-table inheritance __mapper_args__ = { "polymorphic_identity": TargetMediumType.THUMBNAIL -- GitLab