Compare commits

...

2 Commits

Author SHA1 Message Date
5b74ed5620 fix: added name for primary key constraint 2025-07-24 23:10:46 +02:00
bb3a52295d feat: added LowerCaseString field 2025-07-24 22:53:26 +02:00
3 changed files with 24 additions and 1 deletions

View File

@@ -1,3 +1,4 @@
from .fields import * # noqa
from .groups import * # noqa
from .i18n import * # noqa
from .stripe import * # noqa

17
creyPY/const/fields.py Normal file
View File

@@ -0,0 +1,17 @@
from sqlalchemy import types
class LowerCaseString(types.TypeDecorator):
"""Converts strings to lower case on the way in."""
impl = types.String
cache_ok = True
def process_bind_param(self, value, dialect):
if value is None:
return value
return value.lower()
@property
def python_type(self):
return str

View File

@@ -1,7 +1,7 @@
import uuid
from datetime import datetime
from sqlalchemy import Column, DateTime, String
from sqlalchemy import Column, DateTime, PrimaryKeyConstraint, String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import as_declarative
@@ -23,6 +23,11 @@ class Base(AutoAnnotateMixin, AutoInitMixin):
# TODO: Add automated foreign key resolution
# Add name to primary key constraint to ensure alembic can pick it up later
@declared_attr
def __table_args__(cls):
return (PrimaryKeyConstraint("id", name=f"pk_{cls.__tablename__}"),)
# Generate __tablename__ automatically
@declared_attr
def __tablename__(cls) -> str: