feat VORKOUT-3: added sql tables, db connection, schemas #2

Merged
ivan.dev merged 3 commits from VORKOUT-3 into master 2025-04-02 11:55:33 +05:00
Member
No description provided.
ivan.dev added 1 commit 2025-03-28 17:40:33 +05:00
ivan.dev requested review from cyrussmeat 2025-03-28 17:45:47 +05:00
ivan.dev requested review from vlad.dev 2025-03-28 17:45:47 +05:00
cyrussmeat requested changes 2025-03-28 18:19:15 +05:00
Dismissed
@ -0,0 +53,4 @@
Column('key_id', String(40), default=None),
Column('key_value', String(64), nullable=False),
Column('created_at', DateTime(timezone=True), server_default=func.now()),
Column('expiry', DateTime(timezone=True), nullable=True),
Owner

Давайте сразу добавим установку умолчаний для expiry:

  1. Для access: 1 час
  2. Для refresh: 1 год
  3. Для APIKEY: never (max datetime)
Давайте сразу добавим установку умолчаний для expiry: 1. Для access: 1 час 2. Для refresh: 1 год 3. Для APIKEY: never (max datetime)
ivan.dev marked this conversation as resolved
@ -0,0 +29,4 @@
process_version_archive_table = Table(
'process_version_archive', metadata,
Column('id', Integer, autoincrement=True, nullable=False),
Column('version', Integer, default=1, nullable=False),
Owner

Mea culpa, нужно добавить ps_id : foreign key process_schema.id

Mea culpa, нужно добавить ps_id : foreign key process_schema.id
ivan.dev marked this conversation as resolved
vlad.dev requested changes 2025-03-28 18:37:49 +05:00
Dismissed
@ -0,0 +1 @@
from . import account,events,process
Member

Вот тут я забыл сам сделать
Это надо импортировать в api/db/alembic/env.py вместе с метадатой, чтобы alembic видел изменения в таблицах

from api.db import metadata, tables
Вот тут я забыл сам сделать Это надо импортировать в api/db/alembic/env.py вместе с метадатой, чтобы `alembic` видел изменения в таблицах ```python from api.db import metadata, tables ```
ivan.dev marked this conversation as resolved
@ -0,0 +20,4 @@
account_table = Table(
'account', metadata,
Column('id', Integer, primary_key=True, autoincrement=True),
Member

По поводу моделей все норм, кроме полей с id, там нужен unsigned integer
Его можно посмотреть как сделали в backend.db.sql_types

UnsignedInt = Integer().with_variant(mysql.INTEGER(unsigned=True), "mysql")
По поводу моделей все норм, кроме полей с `id`, там нужен unsigned integer Его можно посмотреть как сделали в [backend.db.sql_types](https://gitea.heado.ru/dinar/backend/src/branch/master/backend/db/sql_types.py) ```python UnsignedInt = Integer().with_variant(mysql.INTEGER(unsigned=True), "mysql") ```
ivan.dev marked this conversation as resolved
ivan.dev added 1 commit 2025-03-31 12:34:58 +05:00
vlad.dev approved these changes 2025-03-31 14:11:39 +05:00
mikhail.dev reviewed 2025-03-31 14:18:27 +05:00
@ -46,0 +54,4 @@
"port": self.MYSQL_PORT,
}
@property
First-time contributor

Может рассмотреть cached_property?

Может рассмотреть [`cached_property`](https://docs.python.org/3/library/functools.html#functools.cached_property)?
ivan.dev marked this conversation as resolved
@ -0,0 +28,4 @@
Column('status', SQLAEnum(EventStatus), nullable=False),
Index('UNIQUE_name', 'name', unique=True)
First-time contributor

А почему просто для name не добавить unique=True?

А почему просто для `name` не добавить `unique=True`?
ivan.dev marked this conversation as resolved
First-time contributor

И миграции позже будут?

И миграции позже будут?
Member

И миграции позже будут?

Вопрос есть по миграциям
В alembic env.py main_options на backend прописаны просто строкой к локальной бд, а как на проде миграции прогоняют?

> И миграции позже будут? Вопрос есть по миграциям В alembic `env.py` main_options на [backend](https://gitea.heado.ru/dinar/backend/src/branch/master/backend/db/alembic/env.py) прописаны просто строкой к локальной бд, а как на проде миграции прогоняют?
Owner

Через тот же make migrate

migrate:  ##@Database Do all migrations in database
	cd $(APPLICATION_NAME)/db && PYTHONPATH='../..' ALEMBIC_MIGRATIONS=True alembic upgrade $(args)

Но там вообще подразумевается, что должно оно браться конечно же из окружения. Динар делал config/* ещё под стейджинг, но не реализовал, так что там env.py сейчас просто руками перебран по конфигу с окружения, насколько я помню и поставлен в игнор по репозиторию.

from backend.config.default import DefaultSettings


class ProdSettings(DefaultSettings):
    @property
    def alembic_uri(self) -> str:
        """Get uri for connection with database."""
        uri = "mysql+pymysql://{user}:{password}@{host}:{port}/{database}".format(
            **self.database_settings,
        )
        print("database_uri", uri)
        return uri
Через тот же make migrate ```python migrate: ##@Database Do all migrations in database cd $(APPLICATION_NAME)/db && PYTHONPATH='../..' ALEMBIC_MIGRATIONS=True alembic upgrade $(args) ``` Но там вообще подразумевается, что должно оно браться конечно же из окружения. Динар делал config/* ещё под стейджинг, но не реализовал, так что там env.py сейчас просто руками перебран по конфигу с окружения, насколько я помню и поставлен в игнор по репозиторию. ```python from backend.config.default import DefaultSettings class ProdSettings(DefaultSettings): @property def alembic_uri(self) -> str: """Get uri for connection with database.""" uri = "mysql+pymysql://{user}:{password}@{host}:{port}/{database}".format( **self.database_settings, ) print("database_uri", uri) return uri ```
cyrussmeat approved these changes 2025-04-01 11:08:24 +05:00
ivan.dev added 1 commit 2025-04-01 14:20:50 +05:00
ivan.dev merged commit ff265ce1d4 into master 2025-04-02 11:55:33 +05:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Vorkout/connect#2
No description provided.