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.service.servicemanager import ServiceManager | ||||
| 
 | ||||
| 
 | ||||
| class Application: | ||||
|  | @ -7,3 +8,9 @@ class Application: | |||
| 
 | ||||
|     def run(self): | ||||
|         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.orm import relationship | ||||
| 
 | ||||
|  | @ -16,3 +18,11 @@ class Entry(Base): | |||
|         secondary=photo_entry_association, | ||||
|         back_populates="entries") | ||||
|     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 ..database import Base | ||||
|  | @ -6,3 +8,7 @@ class TravelDiary(Base): | |||
|     __tablename__ = "TravelDiary" | ||||
|     id = Column(Integer, primary_key=True) | ||||
|     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