Compare commits

...

4 Commits

Author SHA1 Message Date
Gustavo Henrique Miranda 14055770e7
Merge pull request #7 from gmbrax/fix/Entry-Model-Acepting-DateTime
Fixed the entry model to accept datetime instead of a string containing the creating date
2025-06-25 18:28:44 -03:00
Gustavo Henrique Santos Souza de Miranda 56e42c51bd Fixed the entry model to accept datetime instead of a string containing the creating date 2025-06-25 17:26:52 -03:00
Gustavo Henrique Miranda e8f5d4b877
Merge pull request #6 from gmbrax/feat/Database-Integration
Started integrating the database to the UI so it can save the data into the Database
2025-06-25 16:49:27 -03:00
Gustavo Henrique Santos Souza de Miranda f1195391db Started integrating the database to the UI so it can save the data into the database 2025-06-25 14:58:54 -03:00
7 changed files with 21 additions and 14 deletions

View File

@ -7,7 +7,10 @@ from pilgrim.ui.ui import UIApp
class Application: class Application:
def __init__(self): def __init__(self):
self.database = Database() self.database = Database()
self.ui = UIApp(ServiceManagerMock()) session = self.database.session()
session_manager = ServiceManager()
session_manager.set_session(session)
self.ui = UIApp(session_manager)
def run(self): def run(self):
self.database.create() self.database.create()

View File

@ -1,6 +1,6 @@
from typing import Any from typing import Any
from sqlalchemy import Column, Integer, String, ForeignKey from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from pilgrim.models.photo_in_entry import photo_entry_association from pilgrim.models.photo_in_entry import photo_entry_association
@ -12,7 +12,7 @@ class Entry(Base):
id = Column(Integer, primary_key=True) id = Column(Integer, primary_key=True)
title = Column(String) title = Column(String)
text = Column(String) text = Column(String)
date = Column(String) date = Column(DateTime)
photos = relationship( photos = relationship(
"Photo", "Photo",
secondary=photo_entry_association, secondary=photo_entry_association,

View File

@ -1,3 +1,4 @@
from datetime import datetime
from typing import List from typing import List
from ..models.entry import Entry from ..models.entry import Entry
@ -8,7 +9,7 @@ class EntryService:
def __init__(self,session): def __init__(self,session):
self.session = session self.session = session
def create(self, travel_diary_id:int, title: str, text: str, date: str, ): def create(self, travel_diary_id:int, title: str, text: str, date: datetime, ):
travel_diary = self.session.query(TravelDiary).filter(TravelDiary.id == travel_diary_id).first() travel_diary = self.session.query(TravelDiary).filter(TravelDiary.id == travel_diary_id).first()
if not travel_diary: if not travel_diary:
return None return None

View File

@ -1,10 +1,10 @@
from ..models.travel_diary import TravelDiary from ..models.travel_diary import TravelDiary
import asyncio
class TravelDiaryService: class TravelDiaryService:
def __init__(self,session): def __init__(self,session):
self.session = session self.session = session
def create(self, name:str): async def async_create(self, name:str):
new_travel_diary = TravelDiary(name) new_travel_diary = TravelDiary(name)
self.session.add(new_travel_diary) self.session.add(new_travel_diary)
self.session.commit() self.session.commit()
@ -18,14 +18,17 @@ class TravelDiaryService:
def read_all(self): def read_all(self):
return self.session.query(TravelDiary).all() return self.session.query(TravelDiary).all()
def update(self, travel_diary_id: TravelDiary, travel_diary_dst: TravelDiary): def update(self, travel_diary_id: int, name: str):
original = self.read_by_id(travel_diary_id.id) original = self.read_by_id(travel_diary_id)
if original is not None: if original is not None:
original.name = travel_diary_dst.name original.name = name
self.session.commit() self.session.commit()
self.session.refresh(original) self.session.refresh(original)
return original return original
async def async_update(self, travel_diary_id: int, name: str):
return self.update(travel_diary_id, name)
def delete(self, travel_diary_id: TravelDiary): def delete(self, travel_diary_id: TravelDiary):
excluded = self.read_by_id(travel_diary_id.id) excluded = self.read_by_id(travel_diary_id.id)
if excluded is not None: if excluded is not None:

View File

@ -127,8 +127,8 @@ class DiaryListScreen(Screen):
service_manager = self.app.service_manager service_manager = self.app.service_manager
travel_diary_service = service_manager.get_travel_diary_service() travel_diary_service = service_manager.get_travel_diary_service()
# Uses async method # Usa método síncrono agora
diaries = await travel_diary_service.async_read_all() diaries = travel_diary_service.read_all()
# Saves current state # Saves current state
current_diary_id = None current_diary_id = None

View File

@ -375,8 +375,8 @@ class EditEntryScreen(Screen):
service_manager = self.app.service_manager service_manager = self.app.service_manager
entry_service = service_manager.get_entry_service() entry_service = service_manager.get_entry_service()
# Get current date # Get current date as datetime object
current_date = datetime.now().strftime("%d/%m/%Y") current_date = datetime.now()
new_entry = entry_service.create( new_entry = entry_service.create(
travel_diary_id=self.diary_id, travel_diary_id=self.diary_id,

View File

@ -387,4 +387,4 @@ Screen.-modal {
.RenameEntryModal-cancel-button { .RenameEntryModal-cancel-button {
margin: 0 1; margin: 0 1;
width: 1fr; width: 1fr;
} }