feat(backend): add the db connection
This commit is contained in:
3
backend/database/__init__.py
Normal file
3
backend/database/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# database/__init__.py
|
||||
from .connection import DatabaseConnection
|
||||
from .repository import Repository
|
||||
24
backend/database/connection.py
Normal file
24
backend/database/connection.py
Normal file
@@ -0,0 +1,24 @@
|
||||
import sqlite3
|
||||
from typing import List, Tuple
|
||||
|
||||
class DatabaseConnection:
|
||||
def __init__(self, db_name: str):
|
||||
self.conn = sqlite3.connect(db_name)
|
||||
self.cursor = self.conn.cursor()
|
||||
|
||||
def close_connection(self):
|
||||
self.conn.close()
|
||||
|
||||
def execute_query(self, query: str, params: Tuple = None):
|
||||
if params:
|
||||
self.cursor.execute(query, params)
|
||||
else:
|
||||
self.cursor.execute(query)
|
||||
self.conn.commit()
|
||||
|
||||
def execute_query_with_return(self, query: str, params: Tuple = None):
|
||||
if params:
|
||||
self.cursor.execute(query, params)
|
||||
else:
|
||||
self.cursor.execute(query)
|
||||
return self.cursor.fetchall()
|
||||
6
backend/database/models/__init__.py
Normal file
6
backend/database/models/__init__.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# database/models/__init__.py
|
||||
from .classification import Classification
|
||||
from .member import Member
|
||||
from .service_type import ServiceType
|
||||
from .service import Service
|
||||
from .service_availability import ServiceAvailability
|
||||
14
backend/database/models/classification.py
Normal file
14
backend/database/models/classification.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from ..connection import DatabaseConnection
|
||||
|
||||
class Classification:
|
||||
def __init__(self, classification_name: str):
|
||||
self.classification_name = classification_name
|
||||
|
||||
def save(self, db: DatabaseConnection):
|
||||
query = "INSERT INTO Classifications (ClassificationName) VALUES (?)"
|
||||
db.execute_query(query, (self.classification_name,))
|
||||
|
||||
@classmethod
|
||||
def get_all(cls, db: DatabaseConnection):
|
||||
query = "SELECT * FROM Classifications"
|
||||
return db.execute_query_with_return(query)
|
||||
19
backend/database/models/member.py
Normal file
19
backend/database/models/member.py
Normal file
@@ -0,0 +1,19 @@
|
||||
from ..connection import DatabaseConnection
|
||||
|
||||
class Member:
|
||||
def __init__(self, first_name: str, last_name: str, email: str, phone_number: str, classification_id: int, notes: str = None):
|
||||
self.first_name = first_name
|
||||
self.last_name = last_name
|
||||
self.email = email
|
||||
self.phone_number = phone_number
|
||||
self.classification_id = classification_id
|
||||
self.notes = notes
|
||||
|
||||
def save(self, db: DatabaseConnection):
|
||||
query = "INSERT INTO Members (FirstName, LastName, Email, PhoneNumber, ClassificationId, Notes) VALUES (?, ?, ?, ?, ?, ?)"
|
||||
db.execute_query(query, (self.first_name, self.last_name, self.email, self.phone_number, self.classification_id, self.notes))
|
||||
|
||||
@classmethod
|
||||
def get_all(cls, db: DatabaseConnection):
|
||||
query = "SELECT * FROM Members"
|
||||
return db.execute_query_with_return(query)
|
||||
15
backend/database/models/service.py
Normal file
15
backend/database/models/service.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from ..connection import DatabaseConnection
|
||||
|
||||
class Service:
|
||||
def __init__(self, service_type_id: int, service_date: str):
|
||||
self.service_type_id = service_type_id
|
||||
self.service_date = service_date
|
||||
|
||||
def save(self, db: DatabaseConnection):
|
||||
query = "INSERT INTO Services (ServiceTypeId, ServiceDate) VALUES (?, ?)"
|
||||
db.execute_query(query, (self.service_type_id, self.service_date))
|
||||
|
||||
@classmethod
|
||||
def get_all(cls, db: DatabaseConnection):
|
||||
query = "SELECT * FROM Services"
|
||||
return db.execute_query_with_return(query)
|
||||
15
backend/database/models/service_availability.py
Normal file
15
backend/database/models/service_availability.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from ..connection import DatabaseConnection
|
||||
|
||||
class ServiceAvailability:
|
||||
def __init__(self, member_id: int, service_type_id: int):
|
||||
self.member_id = member_id
|
||||
self.service_type_id = service_type_id
|
||||
|
||||
def save(self, db: DatabaseConnection):
|
||||
query = "INSERT INTO ServiceAvailability (MemberId, ServiceTypeId) VALUES (?, ?)"
|
||||
db.execute_query(query, (self.member_id, self.service_type_id))
|
||||
|
||||
@classmethod
|
||||
def get_all(cls, db: DatabaseConnection):
|
||||
query = "SELECT * FROM ServiceAvailability"
|
||||
return db.execute_query_with_return(query)
|
||||
14
backend/database/models/service_type.py
Normal file
14
backend/database/models/service_type.py
Normal file
@@ -0,0 +1,14 @@
|
||||
from ..connection import DatabaseConnection
|
||||
|
||||
class ServiceType:
|
||||
def __init__(self, type_name: str):
|
||||
self.type_name = type_name
|
||||
|
||||
def save(self, db: DatabaseConnection):
|
||||
query = "INSERT INTO ServiceTypes (TypeName) VALUES (?)"
|
||||
db.execute_query(query, (self.type_name,))
|
||||
|
||||
@classmethod
|
||||
def get_all(cls, db: DatabaseConnection):
|
||||
query = "SELECT * FROM ServiceTypes"
|
||||
return db.execute_query_with_return(query)
|
||||
41
backend/database/repository.py
Normal file
41
backend/database/repository.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from .connection import DatabaseConnection
|
||||
from .models import Classification, Member, ServiceType, Service, ServiceAvailability
|
||||
|
||||
class Repository:
|
||||
def __init__(self, db: DatabaseConnection):
|
||||
self.db = db
|
||||
|
||||
def create_classification(self, classification_name: str):
|
||||
classification = Classification(classification_name)
|
||||
classification.save(self.db)
|
||||
|
||||
def create_member(self, first_name: str, last_name: str, email: str, phone_number: str, classification_id: int, notes: str = None):
|
||||
member = Member(first_name, last_name, email, phone_number, classification_id, notes)
|
||||
member.save(self.db)
|
||||
|
||||
def create_service_type(self, type_name: str):
|
||||
service_type = ServiceType(type_name)
|
||||
service_type.save(self.db)
|
||||
|
||||
def create_service(self, service_type_id: int, service_date: str):
|
||||
service = Service(service_type_id, service_date)
|
||||
service.save(self.db)
|
||||
|
||||
def create_service_availability(self, member_id: int, service_type_id: int):
|
||||
service_availability = ServiceAvailability(member_id, service_type_id)
|
||||
service_availability.save(self.db)
|
||||
|
||||
def get_all_classifications(self):
|
||||
return Classification.get_all(self.db)
|
||||
|
||||
def get_all_members(self):
|
||||
return Member.get_all(self.db)
|
||||
|
||||
def get_all_service_types(self):
|
||||
return ServiceType.get_all(self.db)
|
||||
|
||||
def get_all_services(self):
|
||||
return Service.get_all(self.db)
|
||||
|
||||
def get_all_service_availability(self):
|
||||
return ServiceAvailability.get_all(self.db)
|
||||
Reference in New Issue
Block a user