| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import sqlmodel
- from .apikey import apikey
- from .password import password
- class user(sqlmodel.SQLModel, table = True):
- """
- This represents user in database. All users has own unique nick and api
- key. Nick and password is used to login, api key is long, random and
- used to access database via API.
- """
- id: int | None = sqlmodel.Field(default = None, primary_key = True)
- nick: str = sqlmodel.Field(index = True, unique=True)
- password: str = sqlmodel.Field(index = False)
- apikey: str = sqlmodel.Field(index = True, unique=True)
- class user_builder:
- def __init__(self) -> None:
- """
- Create new empty user builder.
- """
- self.clean()
- def clean(self) -> None:
- """
- This clean builed. That mean, new empty user is creating.
- """
- self.__target = user(apikey = apikey())
- @property
- def ready(self) -> bool:
- """
- This check that user in builder is ready to get.
- return: bool - True when user is ready, false if not
- """
- if self.__target.nick is None:
- return False
- if self.__target.password is None:
- return False
- return True
- @property
- def nick(self) -> str | None:
- """
- return: str | None - Current nick of the user in builder
- """
- return self.__target.nick
- @property
- def password(self) -> bool:
- """
- return: bool - True when password is set, false if not
- """
- return self.__target.password is not None
- @nick.setter
- def nick(self, target: str) -> None:
- """
- target: str - New nick for the user
- """
- self.__target.nick = target
- @password.setter
- def password(self, target: str) -> None:
- """
- target: str - New password to hash and set
- """
- self.__target.password = password(target).result
- @property
- def result(self) -> user:
- """
- This return user setup in the builder.
- return: user - User from builder
- """
- if not self.ready:
- raise TypeError("User in builder is not ready yet.")
- return self.__target
|