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:
def __init__(self):
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):
self.database.create()

View File

@ -1,6 +1,6 @@
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 pilgrim.models.photo_in_entry import photo_entry_association
@ -12,7 +12,7 @@ class Entry(Base):
id = Column(Integer, primary_key=True)
title = Column(String)
text = Column(String)
date = Column(String)
date = Column(DateTime)
photos = relationship(
"Photo",
secondary=photo_entry_association,

View File

@ -1,3 +1,4 @@
from datetime import datetime
from typing import List
from ..models.entry import Entry
@ -8,7 +9,7 @@ class EntryService:
def __init__(self,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()
if not travel_diary:
return None

View File

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

View File

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

View File

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

View File

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