feat/db-init #3

Open
Nitro wants to merge 41 commits from feat/db-init into dev
Owner

Добавил модели данных, настроил подключение к БД, а также создал репозитории для работы с таблицами.

Добавил модели данных, настроил подключение к БД, а также создал репозитории для работы с таблицами.
Nitro added the
Приоритет
Высокий
3
Роль
Backend
labels 2025-10-26 13:14:35 +00:00
BlackCorbeau was assigned by Nitro 2025-10-26 13:14:47 +00:00
Sweetbread was assigned by Nitro 2025-10-26 13:14:47 +00:00
Nitro changed target branch from main to dev 2025-10-26 13:16:07 +00:00
Nitro added 8 commits 2025-10-26 13:16:07 +00:00
Nitro self-assigned this 2025-10-26 13:21:19 +00:00
Nitro added 1 commit 2025-10-26 13:32:09 +00:00
BlackCorbeau approved these changes 2025-10-26 13:43:32 +00:00
BlackCorbeau left a comment
Owner

Все впринцепе хорошо, но:

  1. Принты поменяй на логи
  2. поработать над пользователем
  3. Рядом с методами напиши пожалуйста краткую информацию (просто что бы мне было быстрее работать
  4. Подключение поправь оно длжно быть ссылкой + в утилитах есть методы которые тебе и курсор и подключение возвращают
Все впринцепе хорошо, но: 1. Принты поменяй на логи 2. поработать над пользователем 3. Рядом с методами напиши пожалуйста краткую информацию (просто что бы мне было быстрее работать 4. Подключение поправь оно длжно быть ссылкой + в утилитах есть методы которые тебе и курсор и подключение возвращают
@@ -0,0 +1,3 @@
from .connection import get_connection, get_db_config
Owner

Файл не нужен

Файл не нужен
@@ -0,0 +9,4 @@
initializeENV()
def get_db_config() -> dict:
Owner

Добавь подключение по ссылке вместо этого

Добавь подключение по ссылке вместо этого
Author
Owner

Зачем

Зачем
Owner

@Nitro, как раз наоборот: зачем отдельно вводить кучу переменных? Ссылка стандартизирована и удобнее

@Nitro, как раз наоборот: зачем отдельно вводить кучу переменных? Ссылка стандартизирована и удобнее
@@ -0,0 +25,4 @@
try:
config = get_db_config()
conn = psycopg2.connect(**config)
print("Подключение к БД установлено")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +28,4 @@
print("Подключение к БД установлено")
yield conn
except psycopg2.OperationalError as e:
print(f"Ошибка подключения к БД: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +31,4 @@
print(f"Ошибка подключения к БД: {e}")
raise
except Exception as e:
print(f"Неожиданная ошибка: {e}")
Owner

Поменяй на логи

Поменяй на логи
Owner

А в чём смысл обрабатывать ошибку, которая всё равно уронит процесс? Если она неожиданная, то и обрабатывать не надо

А в чём смысл обрабатывать ошибку, которая всё равно уронит процесс? Если она неожиданная, то и обрабатывать не надо
@@ -0,0 +38,4 @@
finally:
if conn:
conn.close()
print("БД закрыта")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +47,4 @@
with conn.cursor() as cur:
cur.execute("SELECT version();")
version = cur.fetchone()
print(f" Версия PostgreSQL: {version[0]}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +50,4 @@
print(f" Версия PostgreSQL: {version[0]}")
return True
except Exception as e:
print(f"Тест подключения бд провален: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +22,4 @@
) for row in cur.fetchall()
]
except Exception as e:
print(f"Ошибка получения прогнозов: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +33,4 @@
row = cur.fetchone()
return AIPrediction(*row) if row else None
except Exception as e:
print(f"Ошибка получения прогноза {prediction_id}: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +48,4 @@
""", (product_id, limit))
return [AIPrediction(*row) for row in cur.fetchall()]
except Exception as e:
print(f"Ошибка получения прогноза по товару {product_id}: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +62,4 @@
""")
return [AIPrediction(*row) for row in cur.fetchall()]
except Exception as e:
print(f"Ошибка получения последних прогнозов по товарам: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +82,4 @@
conn.commit()
return prediction_id
except Exception as e:
print(f"Ошибка создания прогноза: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +98,4 @@
conn.commit()
return deleted_count
except Exception as e:
print(f"Ошибка удаления старых прогнозов: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +27,4 @@
) for row in cur.fetchall()
]
except Exception as e:
print(f"Ошибка получения истории инвентаризации: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +38,4 @@
row = cur.fetchone()
return InventoryRecord(*row) if row else None
except Exception as e:
print(f"Ошибка получения записи инвентаризации {record_id}: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +57,4 @@
conn.commit()
return record_id
except Exception as e:
print(f"Ошибка создания записи инвентаризации: {e}")
Owner

Поменяй на логи

Поменяй на логи
@@ -0,0 +71,4 @@
""")
return [InventoryRecord(*row) for row in cur.fetchall()]
except Exception as e:
print(f"Ошибка получения последней записи инвентаризации по каждому товару: {e}")
Owner

Поменяй на логи

Поменяй на логи
model/user.py Outdated
@@ -20,3 +15,2 @@
return self.role == 'admin'
def toJSON(self):
return json.dumps({"token": f'{self.token}', "user": {"id": self.id, "role": f'{self.role}', "name": f'{self.name}'}})
Owner

Не надо так, лучше верни словарь

Не надо так, лучше верни словарь
model/user.py Outdated
@@ -20,3 +16,2 @@
def toJSON(self):
return json.dumps({"token": f'{self.token}', "user": {"id": self.id, "role": f'{self.role}', "name": f'{self.name}'}})
def is_operator(self) -> bool:
Owner

Это тут зачем разве мы не тянем эту инфу из бд?

Это тут зачем разве мы не тянем эту инфу из бд?
Author
Owner

Просто я предполагал , что вся информация о пользователе нужна нам не только при аунтефикации

Просто я предполагал , что вся информация о пользователе нужна нам не только при аунтефикации
model/user.py Outdated
@@ -23,0 +17,4 @@
def is_operator(self) -> bool:
return self.role == 'operator'
def is_viewer(self) -> bool:
Owner

Это тут тоже зачем, разве мы не тянем это опять же из бд

Это тут тоже зачем, разве мы не тянем это опять же из бд
Sweetbread requested changes 2025-10-26 14:10:31 +00:00
Dismissed
Sweetbread left a comment
Owner
  1. print'ы вместо логов
  2. Много длинных строк
  3. Потом придумаю, к чему ещё придраться
1. print'ы вместо логов 2. Много длинных строк 3. Потом придумаю, к чему ещё придраться
@@ -0,0 +34,4 @@
print(f"Неожиданная ошибка: {e}")
if conn:
conn.rollback()
raise
Owner

Зачем?

Зачем?
@@ -0,0 +9,4 @@
try:
with get_connection() as conn:
with conn.cursor() as cur:
cur.execute("SELECT * FROM ai_predictions ORDER BY prediction_date DESC, product_id")
Owner

Слишком длинная строка

Слишком длинная строка
@@ -0,0 +42,4 @@
return None
def create_record(self, robot_id: str, product_id: str, quantity: int, zone: str,
row_number: int, shelf_number: int, status: str, scanned_at: datetime) -> Optional[int]:
Owner

Слишком длинное определение. Лучше заменить на

def create_record(
  self,
  robot_id:     str,
  product_id:   str,
  quantity:     int,
  zone:         str,
  row_number:   int,
  shelf_number: int,
  status:       str,
  scanned_at:   datetime
) -> Optional[int]:
Слишком длинное определение. Лучше заменить на ```py def create_record( self, robot_id: str, product_id: str, quantity: int, zone: str, row_number: int, shelf_number: int, status: str, scanned_at: datetime ) -> Optional[int]: ```
@@ -0,0 +35,4 @@
print(f"Ошибка получения роботов {robot_id}: {e}")
return None
def update_robot(self, robot_id: str, status: str = None, battery_level: int = None,
Owner

Слишком длинное определение

Слишком длинное определение
@@ -0,0 +14,4 @@
password_hash=row[2],
name=row[3],
role=row[4],
created_at=row[5]
Owner

Можно ли заменить на User(*row)?

Можно ли заменить на User(*row)?
Sweetbread removed their assignment 2025-10-26 14:19:00 +00:00
BlackCorbeau was unassigned by Sweetbread 2025-10-26 14:19:00 +00:00
Nitro added 1 commit 2025-10-26 15:49:09 +00:00
Owner

@Nitro, на конце файлов оставляй пустую строку. Это связано с тем, что для git строка считается до \n включительно:

a\n
b

Если добавить или убрать строку, будут лишние изменения:

 a\n
-b
+b\n
+c
@Nitro, на конце файлов оставляй пустую строку. Это связано с тем, что для git строка считается до `\n` включительно: ``` a\n b ``` Если добавить или убрать строку, будут лишние изменения: ```diff a\n -b +b\n +c ```
Nitro added 1 commit 2025-10-26 15:53:00 +00:00
Nitro added 1 commit 2025-10-26 16:14:58 +00:00
Sweetbread reviewed 2025-10-26 16:17:11 +00:00
db/connection.py Outdated
@@ -0,0 +38,4 @@
def test_connection() -> bool:
try:
with get_connection() as conn:
cur = PSQLCursor(conn)
Owner

Делать надо лучше, а не хуже

Делать надо лучше, а не хуже
Author
Owner

Так захотел Кирилл

Так захотел Кирилл
Author
Owner

это его функции

это его функции
Nitro added 1 commit 2025-10-26 16:32:39 +00:00
Nitro added 1 commit 2025-10-26 16:41:17 +00:00
Author
Owner

Все исправил, жду одобрения и заливаю

Все исправил, жду одобрения и заливаю
Nitro requested review from Sweetbread 2025-10-26 16:59:52 +00:00
Owner

Конфликты надо решить, как минимум

Конфликты надо решить, как минимум
Owner

Также, мне кажется, надо всё логирование успешных операций с БД надо сделать debug

Также, мне кажется, надо всё логирование успешных операций с БД надо сделать debug
Author
Owner

Конфликты надо решить, как минимум

Конфликты решаются при мерже, если больше вопросов нет, тогда делаю

> Конфликты надо решить, как минимум Конфликты решаются при мерже, если больше вопросов нет, тогда делаю
Nitro added 1 commit 2025-10-26 17:31:57 +00:00
Sweetbread started working 2025-10-26 17:33:17 +00:00
Sweetbread added 2 commits 2025-10-26 18:21:01 +00:00
Sweetbread added 2 commits 2025-10-26 18:26:10 +00:00
Owner

Конфликты решаются при мерже

Микроскопом гвозди забивать

Так, а теперь, как пользоваться этим кодом, как его проверить на работоспособность и зачем он?

> Конфликты решаются при мерже Микроскопом гвозди забивать Так, а теперь, как пользоваться этим кодом, как его проверить на работоспособность и зачем он?
Sweetbread added 2 commits 2025-10-26 20:19:58 +00:00
Sweetbread worked for 2 hours 47 minutes 2025-10-26 20:20:25 +00:00
Sweetbread requested changes 2025-10-26 21:02:49 +00:00
Sweetbread left a comment
Owner

Добавить инициализацию таблиц

Добавить инициализацию таблиц
Nitro added 17 commits 2025-10-27 20:06:39 +00:00
# Conflicts:
#	api/loginapi.py
#	db/connection.py
#	db/repositories/ai_prediction_repository.py
#	db/repositories/inventory_repository.py
#	db/repositories/product_repository.py
#	db/repositories/robot_repository.py
#	db/repositories/user_repository.py
Owner

Ну начнем с того что не logger а logur а 2 где записки? Я как ориентироваться должен? По наитию?

Ну начнем с того что не logger а logur а 2 где записки? Я как ориентироваться должен? По наитию?
This pull request has changes conflicting with the target branch.
  • api/auth.py
  • app.py
  • model/user.py
  • utils/PostgressConnect.py
  • utils/token.py
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/db-init:feat/db-init
git checkout feat/db-init
Sign in to join this conversation.
3 Participants
Notifications
Total Time Spent: 2 hours 47 minutes
Sweetbread
2 hours 47 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Hackaton/Backend#3