Skip to content
Snippets Groups Projects
Commit 10eaf701 authored by Simon Künzel's avatar Simon Künzel
Browse files

Use JSONB instead of JSON (B for binary)

parent b0ebbfa6
Branches
No related tags found
No related merge requests found
...@@ -7,6 +7,7 @@ from sqlalchemy import Engine, Table, MetaData, Column, types, DefaultClause, Te ...@@ -7,6 +7,7 @@ from sqlalchemy import Engine, Table, MetaData, Column, types, DefaultClause, Te
from sqlalchemy.exc import * from sqlalchemy.exc import *
from sqlalchemy.sql.base import _NoneName, ReadOnlyColumnCollection from sqlalchemy.sql.base import _NoneName, ReadOnlyColumnCollection
from sqlalchemy.sql.schema import ColumnCollectionConstraint, ForeignKey from sqlalchemy.sql.schema import ColumnCollectionConstraint, ForeignKey
from sqlalchemy.dialects import postgresql as postgresql
# #
...@@ -185,6 +186,16 @@ def _check_types_equal(actual: types.TypeEngine, schema: types.TypeEngine) -> bo ...@@ -185,6 +186,16 @@ def _check_types_equal(actual: types.TypeEngine, schema: types.TypeEngine) -> bo
return (isinstance(actual, types.JSON) return (isinstance(actual, types.JSON)
and schema.none_as_null == actual.none_as_null) and schema.none_as_null == actual.none_as_null)
if type(schema) is postgresql.JSON:
assert isinstance(schema, postgresql.JSON)
return (isinstance(actual, postgresql.JSON)
and schema.none_as_null == actual.none_as_null)
if type(schema) is postgresql.JSONB:
assert isinstance(schema, postgresql.JSONB)
return (isinstance(actual, postgresql.JSONB)
and schema.none_as_null == actual.none_as_null)
if type(schema) is types.DateTime: if type(schema) is types.DateTime:
assert isinstance(schema, types.DateTime) # For pycharm assert isinstance(schema, types.DateTime) # For pycharm
return (isinstance(actual, types.DateTime) return (isinstance(actual, types.DateTime)
......
...@@ -138,7 +138,7 @@ class Lecture(DeletableApiObject, VisibilityApiObject, ApiViewPermissionsObject, ...@@ -138,7 +138,7 @@ class Lecture(DeletableApiObject, VisibilityApiObject, ApiViewPermissionsObject,
) )
) )
media_process: Mapped[dict] = api_mapped( media_process: Mapped[dict] = api_mapped(
mapped_column(sql.JSON, nullable=True), # Null indicates, inherit from course mapped_column(postgresql.JSONB, nullable=True), # Null indicates, inherit from course
ApiMediaProcessField( ApiMediaProcessField(
include_in_config=True include_in_config=True
) )
...@@ -441,7 +441,7 @@ class Course(DeletableApiObject, VisibilityApiObject, ApiViewPermissionsObject, ...@@ -441,7 +441,7 @@ class Course(DeletableApiObject, VisibilityApiObject, ApiViewPermissionsObject,
) )
) )
media_process: Mapped[dict] = api_mapped( media_process: Mapped[dict] = api_mapped(
mapped_column(sql.JSON, nullable=False), mapped_column(postgresql.JSONB, nullable=False),
ApiMediaProcessField( ApiMediaProcessField(
include_in_config=True include_in_config=True
) )
......
...@@ -50,13 +50,13 @@ class Job(ApiObject, Base): ...@@ -50,13 +50,13 @@ class Job(ApiObject, Base):
) )
) )
input_data: Mapped[JsonTypes] = api_mapped( input_data: Mapped[JsonTypes] = api_mapped(
mapped_column(sql.JSON, nullable=False), mapped_column(postgresql.JSONB, nullable=False),
ApiJsonField( ApiJsonField(
include_in_data=True include_in_data=True
) )
) )
output_data: Mapped[JsonTypes] = api_mapped( output_data: Mapped[JsonTypes] = api_mapped(
mapped_column(sql.JSON, nullable=True), mapped_column(postgresql.JSONB, nullable=True),
ApiJsonField( ApiJsonField(
include_in_data=True include_in_data=True
) )
...@@ -69,7 +69,7 @@ class Job(ApiObject, Base): ...@@ -69,7 +69,7 @@ class Job(ApiObject, Base):
) )
) )
on_end_event_data: Mapped[JsonTypes] = api_mapped( on_end_event_data: Mapped[JsonTypes] = api_mapped(
mapped_column(sql.JSON, nullable=True), mapped_column(postgresql.JSONB, nullable=True),
ApiJsonField( ApiJsonField(
include_in_data=True include_in_data=True
) )
......
...@@ -108,7 +108,7 @@ class SourceMedium(DeletableApiObject, Base): ...@@ -108,7 +108,7 @@ class SourceMedium(DeletableApiObject, Base):
) )
# metadata is reserved # metadata is reserved
file_metadata: Mapped[JsonTypes] = api_mapped( file_metadata: Mapped[JsonTypes] = api_mapped(
mapped_column(sql.JSON, nullable=True), mapped_column(postgresql.JSONB, nullable=True),
ApiJsonField( ApiJsonField(
include_in_data=True, include_in_data=True,
# See source file sorter for contents # See source file sorter for contents
...@@ -340,6 +340,7 @@ class TargetMedium(DeletableApiObject, Base): ...@@ -340,6 +340,7 @@ class TargetMedium(DeletableApiObject, Base):
class FileMedium(ApiObject): class FileMedium(ApiObject):
file_path: Mapped[str] = mapped_column(String(collation=STRING_COLLATION), nullable=True, use_existing_column=True, index=True) # TODO move? file_path: Mapped[str] = mapped_column(String(collation=STRING_COLLATION), nullable=True, use_existing_column=True, index=True) # TODO move?
# TODO size field
@api_include_in_data( @api_include_in_data(
type_id="string", type_id="string",
...@@ -561,7 +562,7 @@ class MediaProcessTemplate(ApiObject, Base): ...@@ -561,7 +562,7 @@ class MediaProcessTemplate(ApiObject, Base):
) )
) )
process: Mapped[dict] = api_mapped( process: Mapped[dict] = api_mapped(
mapped_column(sql.JSON, nullable=False), mapped_column(postgresql.JSONB, nullable=False),
ApiMediaProcessField( ApiMediaProcessField(
include_in_config=True include_in_config=True
) )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment