1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Files
quay/util/migrate/__init__.py
Kenny Lee Sin Cheong 5f63b3a7bb chore: drop deprecated tables and remove unused code (PROJQUAY-522) (#2089)
* chore: drop deprecated tables and remove unused code

* isort imports

* migration: check for table existence before drop
2023-08-25 12:17:24 -04:00

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))