import tortoise.fields from .model import model from .constants import constants class field_generator: @staticmethod def id() -> tortoise.fields.IntField: return tortoise.fields.IntField(primary_key = True) @staticmethod def name() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 30) @staticmethod def password() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 256) @staticmethod def surname() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 30) @staticmethod def nick() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 20) @staticmethod def description() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 4096) @staticmethod def phone_number() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 15) @staticmethod def barcode() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 13) @staticmethod def email() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 30) @staticmethod def apikey() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 280) @staticmethod def secret() -> tortoise.fields.TextField: return tortoise.fields.TextField(max_lenght = 256) @staticmethod def permissions() -> tortoise.fields.BooleanField: return tortoise.fields.BooleanField() @staticmethod def stock() -> tortoise.fields.IntField: return tortoise.fields.IntField @staticmethod def __connected_names(target: type, field: str | None) -> [str, str]: if not issubclass(target, model): raise TypeError("Foreign key target is not child of model.") name = target.__name__ model_name = model.Meta.app + "." + name related_name = constants.related_name(name, field) return model_name, related_name @classmethod def connected_many( cls, target: type, field: str | None = None ) -> tortoise.fields.ManyToManyField: model, related = cls.__connected_names(target, field) return tortoise.fields.ManyToManyField( model, related_name = related ) @classmethod def connected_single( cls, target: type, field: str | None = None ) -> tortoise.fields.ForeignKeyField: model, related = cls.__connected_names(target, field) return tortoise.fields.ForeignKeyField( model, related_name = related )