What is a lot of fucking work!
This commit is contained in:
parent
85c07ed4f3
commit
3414b5c334
8 changed files with 586 additions and 216 deletions
107
utils.py
107
utils.py
|
|
@ -1,17 +1,12 @@
|
|||
from based.db import DBConnector
|
||||
from based.columns import (
|
||||
ColumnDefinition,
|
||||
make_column_unique,
|
||||
PrimarySerialColumnDefinition,
|
||||
PrimaryUUIDColumnDefinition,
|
||||
TextColumnDefinition,
|
||||
BigintColumnDefinition,
|
||||
BooleanColumnDefinition,
|
||||
DateColumnDefinition,
|
||||
TimestampColumnDefinition,
|
||||
DoubleColumnDefinition,
|
||||
IntegerColumnDefinition,
|
||||
UUIDColumnDefinition,
|
||||
)
|
||||
from dba import get_user_by_access_token
|
||||
|
||||
|
|
@ -34,82 +29,40 @@ def get_column_from_definition(definition: str) -> ColumnDefinition | None:
|
|||
case [name, "serial", "primary"]:
|
||||
return PrimarySerialColumnDefinition(name)
|
||||
|
||||
case [name, "uuid", "primary"]:
|
||||
return PrimaryUUIDColumnDefinition(name)
|
||||
case [name, "str", *rest]:
|
||||
is_unique = "unique" in rest
|
||||
has_default = "default" in rest
|
||||
td = TextColumnDefinition(name, unique=is_unique)
|
||||
td.has_default = has_default
|
||||
return td
|
||||
|
||||
case [name, "str"]:
|
||||
return TextColumnDefinition(name)
|
||||
case [name, "str", "unique"]:
|
||||
return make_column_unique(TextColumnDefinition(name))
|
||||
case [name, "str", "default", default]:
|
||||
return TextColumnDefinition(name, default=default)
|
||||
case [name, "str", "default", default, "unique"]:
|
||||
return make_column_unique(TextColumnDefinition(name, default=default))
|
||||
case [name, "bool", *rest]:
|
||||
is_unique = "unique" in rest
|
||||
has_default = "default" in rest
|
||||
td = BooleanColumnDefinition(name, unique=is_unique)
|
||||
td.has_default = has_default
|
||||
return td
|
||||
|
||||
case [name, "bigint"]:
|
||||
return BigintColumnDefinition(name)
|
||||
case [name, "bigint", "unique"]:
|
||||
return make_column_unique(BigintColumnDefinition(name))
|
||||
case [name, "bigint", "default", default]:
|
||||
return BigintColumnDefinition(name, default=int(default))
|
||||
case [name, "bigint", "default", default, "unique"]:
|
||||
return make_column_unique(
|
||||
BigintColumnDefinition(name, default=int(default))
|
||||
)
|
||||
case [name, "datetime", *rest]:
|
||||
is_unique = "unique" in rest
|
||||
has_default = "default" in rest
|
||||
td = TimestampColumnDefinition(name, unique=is_unique)
|
||||
td.has_default = has_default
|
||||
return td
|
||||
|
||||
case [name, "bool"]:
|
||||
return BooleanColumnDefinition(name)
|
||||
case [name, "bool", "unique"]:
|
||||
return make_column_unique(BooleanColumnDefinition(name))
|
||||
case [name, "bool", "default", default]:
|
||||
return BooleanColumnDefinition(name, default=bool(default))
|
||||
case [name, "bool", "default", default, "unique"]:
|
||||
return make_column_unique(
|
||||
BooleanColumnDefinition(name, default=bool(default))
|
||||
)
|
||||
case [name, "float", *rest]:
|
||||
is_unique = "unique" in rest
|
||||
has_default = "default" in rest
|
||||
td = DoubleColumnDefinition(name, unique=is_unique)
|
||||
td.has_default = has_default
|
||||
return td
|
||||
|
||||
case [name, "date"]:
|
||||
return DateColumnDefinition(name)
|
||||
case [name, "date", "unique"]:
|
||||
return make_column_unique(DateColumnDefinition(name))
|
||||
# TODO: Add default value for date
|
||||
|
||||
case [name, "datetime"]:
|
||||
return TimestampColumnDefinition(name)
|
||||
case [name, "datetime", "unique"]:
|
||||
return make_column_unique(TimestampColumnDefinition(name))
|
||||
# TODO: Add default value for timestamp
|
||||
|
||||
case [name, "float"]:
|
||||
return DoubleColumnDefinition(name)
|
||||
case [name, "float", "unique"]:
|
||||
return make_column_unique(DoubleColumnDefinition(name))
|
||||
case [name, "float", "default", default]:
|
||||
return DoubleColumnDefinition(name, default=float(default))
|
||||
case [name, "float", "default", default, "unique"]:
|
||||
return make_column_unique(
|
||||
DoubleColumnDefinition(name, default=float(default))
|
||||
)
|
||||
|
||||
case [name, "int"]:
|
||||
return IntegerColumnDefinition(name)
|
||||
case [name, "int", "unique"]:
|
||||
return make_column_unique(IntegerColumnDefinition(name))
|
||||
case [name, "int", "default", default]:
|
||||
return IntegerColumnDefinition(name, default=int(default))
|
||||
case [name, "int", "default", default, "unique"]:
|
||||
return make_column_unique(
|
||||
IntegerColumnDefinition(name, default=int(default))
|
||||
)
|
||||
|
||||
case [name, "uuid"]:
|
||||
return UUIDColumnDefinition(name)
|
||||
case [name, "uuid", "unique"]:
|
||||
return make_column_unique(UUIDColumnDefinition(name))
|
||||
case [name, "uuid", "default", default]:
|
||||
return UUIDColumnDefinition(name, default=default)
|
||||
case [name, "uuid", "default", default, "unique"]:
|
||||
return make_column_unique(UUIDColumnDefinition(name, default=default))
|
||||
case [name, "int", *rest]:
|
||||
is_unique = "unique" in rest
|
||||
has_default = "default" in rest
|
||||
td = IntegerColumnDefinition(name, unique=is_unique)
|
||||
td.has_default = has_default
|
||||
return td
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue