mirror of
https://github.com/quay/quay.git
synced 2026-01-26 06:21:37 +03:00
* chore: drop deprecated tables and remove unused code * isort imports * migration: check for table existence before drop
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import logging
|
|
|
|
from sqlalchemy.dialects.mysql import LONGTEXT
|
|
from sqlalchemy.dialects.mysql import TEXT as MySQLText
|
|
from sqlalchemy.dialects.mysql import VARCHAR as MySQLString
|
|
from sqlalchemy.types import String, Text, TypeDecorator
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class UTF8LongText(TypeDecorator):
|
|
"""
|
|
Platform-independent UTF-8 LONGTEXT type.
|
|
|
|
Uses MySQL's LongText with charset utf8mb4, otherwise uses TEXT, because other engines default
|
|
to UTF-8 and have longer TEXT fields.
|
|
"""
|
|
|
|
impl = Text
|
|
|
|
def load_dialect_impl(self, dialect):
|
|
if dialect.name == "mysql":
|
|
return dialect.type_descriptor(
|
|
LONGTEXT(charset="utf8mb4", collation="utf8mb4_unicode_ci")
|
|
)
|
|
else:
|
|
return dialect.type_descriptor(Text())
|
|
|
|
|
|
class UTF8CharField(TypeDecorator):
|
|
"""
|
|
Platform-independent UTF-8 Char type.
|
|
|
|
Uses MySQL's VARCHAR with charset utf8mb4, otherwise uses String, because other engines default
|
|
to UTF-8.
|
|
"""
|
|
|
|
impl = String
|
|
|
|
def load_dialect_impl(self, dialect):
|
|
if dialect.name == "mysql":
|
|
return dialect.type_descriptor(
|
|
MySQLString(
|
|
charset="utf8mb4", collation="utf8mb4_unicode_ci", length=self.impl.length
|
|
)
|
|
)
|
|
else:
|
|
return dialect.type_descriptor(String(length=self.impl.length))
|