mirror of https://github.com/gmbrax/Pilgrim.git
Added the Services layer to the code to do the database operation
This commit is contained in:
parent
0a9c2952ec
commit
8ad57b548f
|
|
@ -1,4 +1,5 @@
|
||||||
from pilgrim.database import Database
|
from pilgrim.database import Database
|
||||||
|
from pilgrim.service.servicemanager import ServiceManager
|
||||||
|
|
||||||
|
|
||||||
class Application:
|
class Application:
|
||||||
|
|
@ -7,3 +8,9 @@ class Application:
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
self.database.create()
|
self.database.create()
|
||||||
|
|
||||||
|
def get_service_manager(self):
|
||||||
|
session = self.database.session()
|
||||||
|
session_manager = ServiceManager()
|
||||||
|
session_manager.set_session(session)
|
||||||
|
return session_manager
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from sqlalchemy import Column, Integer, String, ForeignKey
|
from sqlalchemy import Column, Integer, String, ForeignKey
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
|
|
@ -16,3 +18,11 @@ class Entry(Base):
|
||||||
secondary=photo_entry_association,
|
secondary=photo_entry_association,
|
||||||
back_populates="entries")
|
back_populates="entries")
|
||||||
fk_TravelDiary_id = Column(Integer, ForeignKey("TravelDiary.id"))
|
fk_TravelDiary_id = Column(Integer, ForeignKey("TravelDiary.id"))
|
||||||
|
def __init__(self, title: str, text: str, date: str, travel_diary_id: int, **kw: Any):
|
||||||
|
super().__init__(**kw)
|
||||||
|
self.title = title
|
||||||
|
self.text = text
|
||||||
|
self.date = date
|
||||||
|
self.fk_TravelDiary_id = travel_diary_id
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
from sqlalchemy import Column, String, Integer
|
from sqlalchemy import Column, String, Integer
|
||||||
|
|
||||||
from ..database import Base
|
from ..database import Base
|
||||||
|
|
@ -6,3 +8,7 @@ class TravelDiary(Base):
|
||||||
__tablename__ = "TravelDiary"
|
__tablename__ = "TravelDiary"
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
name = Column(String)
|
name = Column(String)
|
||||||
|
|
||||||
|
def __init__(self, name: str, **kw: Any):
|
||||||
|
super().__init__(**kw)
|
||||||
|
self.name = name
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
|
||||||
|
|
||||||
|
from ..models.entry import Entry
|
||||||
|
from ..models.travel_diary import TravelDiary
|
||||||
|
|
||||||
|
|
||||||
|
class EntryService:
|
||||||
|
def __init__(self,session):
|
||||||
|
self.session = session
|
||||||
|
|
||||||
|
def create(self, travel_diary_id:int, title: str, text: str, date: str, ):
|
||||||
|
travel_diary = self.session.query(TravelDiary).filter(TravelDiary.id == travel_diary_id).first()
|
||||||
|
if not travel_diary:
|
||||||
|
return None
|
||||||
|
new_entry = Entry(title,text,date,travel_diary_id)
|
||||||
|
self.session.add(new_entry)
|
||||||
|
self.session.commit()
|
||||||
|
self.session.refresh(new_entry)
|
||||||
|
|
||||||
|
|
||||||
|
return new_entry
|
||||||
|
|
||||||
|
def read_by_id(self,entry_id:int):
|
||||||
|
entry = self.session.query(Entry).filter(Entry.id == entry_id).first()
|
||||||
|
return entry
|
||||||
|
|
||||||
|
def read_all(self):
|
||||||
|
entries = self.session.query(Entry).all()
|
||||||
|
return entries
|
||||||
|
|
||||||
|
def update(self,entry_src:Entry,entry_dst:Entry):
|
||||||
|
original:Entry = self.read_by_id(entry_src.id)
|
||||||
|
if original:
|
||||||
|
original.title = entry_dst.title
|
||||||
|
original.text = entry_dst.text
|
||||||
|
original.date = entry_dst.date
|
||||||
|
original.fk_TravelDiary_id = entry_dst.fk_TravelDiary_id
|
||||||
|
original.photos = entry_dst.photos
|
||||||
|
self.session.commit()
|
||||||
|
self.session.refresh(original)
|
||||||
|
return original
|
||||||
|
|
||||||
|
def delete(self,entry_src:Entry):
|
||||||
|
excluded = self.read_by_id(entry_src.id)
|
||||||
|
if excluded is not None:
|
||||||
|
self.session.delete(excluded)
|
||||||
|
self.session.commit()
|
||||||
|
return excluded
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
from pilgrim.service.entry_service import EntryService
|
||||||
|
from pilgrim.service.travel_diary_service import TravelDiaryService
|
||||||
|
|
||||||
|
|
||||||
|
class ServiceManager:
|
||||||
|
def __init__(self):
|
||||||
|
self.session = None
|
||||||
|
def set_session(self, session):
|
||||||
|
self.session = session
|
||||||
|
def get_session(self):
|
||||||
|
return self.session
|
||||||
|
def get_entry_service(self):
|
||||||
|
if self.session is not None:
|
||||||
|
return EntryService(self.session)
|
||||||
|
return None
|
||||||
|
def get_travel_diary_service(self):
|
||||||
|
if self.session is not None:
|
||||||
|
return TravelDiaryService(self.session)
|
||||||
|
return None
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
from ..models.travel_diary import TravelDiary
|
||||||
|
|
||||||
|
|
||||||
|
class TravelDiaryService:
|
||||||
|
def __init__(self,session):
|
||||||
|
self.session = session
|
||||||
|
def create(self, name:str):
|
||||||
|
new_travel_diary = TravelDiary(name)
|
||||||
|
self.session.add(new_travel_diary)
|
||||||
|
self.session.commit()
|
||||||
|
self.session.refresh(new_travel_diary)
|
||||||
|
|
||||||
|
return new_travel_diary
|
||||||
|
|
||||||
|
def read_by_id(self, travel_id:int):
|
||||||
|
return self.session.query(TravelDiary).get(travel_id)
|
||||||
|
|
||||||
|
def read_all(self):
|
||||||
|
return self.session.query(TravelDiary).all()
|
||||||
|
|
||||||
|
def update(self, travel_diary_src:TravelDiary,travel_diary_dst:TravelDiary):
|
||||||
|
original = self.read_by_id(travel_diary_src.id)
|
||||||
|
if original is not None:
|
||||||
|
original.name = travel_diary_dst.name
|
||||||
|
self.session.commit()
|
||||||
|
self.session.refresh(original)
|
||||||
|
return original
|
||||||
|
|
||||||
|
def delete(self, travel_diary_src:TravelDiary):
|
||||||
|
excluded = self.read_by_id(travel_diary_src.id)
|
||||||
|
if excluded is not None:
|
||||||
|
self.session.delete(travel_diary_src)
|
||||||
|
self.session.commit()
|
||||||
|
return excluded
|
||||||
|
return None
|
||||||
Loading…
Reference in New Issue