Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/database/init/schema.sql
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
person_name TEXT NOT NULL,
name TEXT NOT NULL,
age INTEGER,
height REAL
);
1 change: 0 additions & 1 deletion src/main/routes/user_route.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,4 @@
# Route to register a new user
@user_routes_bp.route("/user", methods=["POST"])
def registry_user():
# TODO: Implement registration logic and components
return jsonify({"route": "User registration route"}), 200
3 changes: 3 additions & 0 deletions src/models/connection/base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from sqlalchemy.orm import declarative_base
Base = declarative_base()

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

class DbCoonectionHandle:
class DbConnectionHandler:
def __init__(self):
self.__connection_string = "sqlite:///schema.db"
self.__connection_string = "sqlite:///src/database/schema.db"
self.__engine = self.__create_database_engine()
self.session = None

Expand All @@ -12,7 +12,7 @@ def __create_database_engine(self):
return engine

def __enter__(self):
session_make = sessionmaker()
session_make = sessionmaker(bind=self.__engine)
self.session = session_make()
return self

Expand Down
12 changes: 12 additions & 0 deletions src/models/connection/db_connection_handler_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import pytest
from .db_connection_handler import DbConnectionHandler

#@pytest.mark.skip(reason="Integration with DB")
def test_db_connection_handler():
db_conn_handler = DbConnectionHandler()

assert db_conn_handler.session is None

with db_conn_handler:
print(db_conn_handler.session)
assert db_conn_handler.session is not None
Empty file added src/models/entities/__init__.py
Empty file.
16 changes: 16 additions & 0 deletions src/models/entities/users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# pylint: disable=R0903

from sqlalchemy import Column, String, Integer, Float
from src.models.connection.base import Base

class Users(Base):
__tablename__="users"

id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String, nullable=False)
age = Column(Integer)
height = Column(Float)

def __repr__(self):
return f"Users [id={self.id}, name{self.name}]"

Empty file.
29 changes: 29 additions & 0 deletions src/models/repositories/users_repository.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from src.models.connection.db_connection_handler import DbConnectionHandler
from src.models.entities.users import Users
class UsersRepository:
def __init__(self, db_conn_handler: DbConnectionHandler):
self.__db_conn_handler = db_conn_handler

def insert_user(self, name: str, age: int, height: float) -> None:
with self.__db_conn_handler as database:
try:
new_user = Users(
name=name,
age=age,
height=height
)
database.session.add(new_user)
database.session.commit()
except Exception as exception:
database.session.rollback()
raise exception

def select_user(self, name: str) -> list[Users]:
with self.__db_conn_handler as database:
users = (
database.session
.query(Users)
.filter(Users.name == name)
.all()
)
return users
21 changes: 21 additions & 0 deletions src/models/repositories/users_repository_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import pytest
from src.models.connection.db_connection_handler import DbConnectionHandler
from .users_repository import UsersRepository

@pytest.mark.skip(reason="Insert in DB")
def test_users_repository():
db_conn = DbConnectionHandler()
users_repo = UsersRepository(db_conn)

name = "Test name"
age = 100
height = 1.85

users_repo.insert_user(name, age, height)
users = users_repo.select_user(name)

assert isinstance(users, list)
assert len(users) >= 1
assert users[0].name == name
assert users[0].age == age
assert users[0].height == height
Loading