Compare commits

...

7 Commits

Author SHA1 Message Date
8f92a29eef 実際のDBで動作するように 2025-07-29 20:21:35 +09:00
a3249a6067 こっちもさっきと同じく修正 2025-07-29 20:09:13 +09:00
d19a7119b2 init.pyの理解を間違えてたので修正... 2025-07-29 19:51:42 +09:00
3dcc69a49a minor fix 2025-07-29 18:41:20 +09:00
e8094c6e75 実際のDBで動作するように 2025-07-29 18:33:12 +09:00
5c29ad9cf6 minor fix 2025-07-29 15:20:51 +09:00
8949e4db12 ジムの入館記録を取るためのDBモデルを作成 2025-07-29 15:20:08 +09:00
8 changed files with 47 additions and 39 deletions

View File

@@ -3,7 +3,7 @@ from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager from flask_login import LoginManager
import os import os
# db = SQLAlchemy() db = SQLAlchemy()
login_manager = LoginManager() login_manager = LoginManager()
#login_manager.login_view = 'auth.login' #login_manager.login_view = 'auth.login'
login_manager.login_message_category = 'info' login_manager.login_message_category = 'info'
@@ -16,10 +16,11 @@ def create_app():
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/workout' app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:password@localhost/workout'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
#db.init_app(app) db.init_app(app)
#login_manager.init_app(app) login_manager.init_app(app)
#with app.app_context(): with app.app_context():
#db.create_all() from . import models
db.create_all()
return app return app

View File

@@ -1,3 +1,4 @@
<!-- プロトタイプ -->
<!DOCTYPE html> <!DOCTYPE html>
<html lang="ja"> <html lang="ja">
<head> <head>

View File

@@ -1,2 +1 @@
from . import db from .workout import Workout, User, Exercise, WorkoutLog, GymAdmissionLog
from datetime import datetime

View File

@@ -63,3 +63,12 @@ class WorkoutLog(db.Model):
def __repr__(self): def __repr__(self):
return f'<Log: Set {self.set_number} of {self.exercise.name}>' return f'<Log: Set {self.set_number} of {self.exercise.name}>'
class GymAdmissionLog(db.model):
__tablename__ = 'gym_admission_logs'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
gym_name = db.Column(db.String(120), nullable=False)
enter_at = db.Column(db.DateTime, nullable=False)
exit_at = db.Column(db.DateTime, nullable=False)

View File

@@ -1 +1 @@
from app.models.workout import Workout from .workout_repository import WorkoutRepository

View File

@@ -1,31 +1,29 @@
from app.models.workout import Workout from app import db
from app.models import Workout
from typing import List
class WorkoutRepository: class WorkoutRepository:
def __init__(self): def add_workout(self, workout: Workout) -> Workout:
self.workouts = [] db.session.add(workout)
db.session.commit()
return workout
def add_workout(self, workout: Workout): def get_all_workouts(self) -> List[Workout]:
self.workouts.append(workout) return Workout.query.all()
def get_all_workouts(self): def get_workout_by_id(self, workout_id: int) -> Workout | None:
return self.workouts return Workout.query.get(workout_id)
def get_workout_by_id(self, workout_id: int): def update_workout(self, workout: Workout) -> Workout:
for workout in self.workouts: db.session.commit()
if workout.id == workout_id: return workout
return workout
return None
def update_workout(self, workout_id: int, updated_workout: Workout): def delete_workout(self, workout_id: int) -> bool:
for i, workout in enumerate(self.workouts): workout = self.get_workout_by_id(workout_id)
if workout.id == workout_id: if workout:
self.workouts[i] = updated_workout db.session.delete(workout)
return True db.session.commit()
return True
return False return False
def delete_workout(self, workout_id: int): # TODO:ジム入退時刻追加更新
for i, workout in enumerate(self.workouts):
if workout.id == workout_id:
del self.workouts[i]
return True
return False

View File

@@ -1,2 +1 @@
from app.repositories.workout_repository import WorkoutRepository
from app.models.workout import Workout

View File

@@ -6,10 +6,11 @@ class WorkoutService:
self.workout_repository = WorkoutRepository() self.workout_repository = WorkoutRepository()
def get_all_workouts(self): def get_all_workouts(self):
return self.workout_repository.get_all() return self.workout_repository.get_all_workouts()
def get_workout_by_id(self, workout_id): def get_workout_by_id(self, workout_id):
workout = self.workout_repository.get_by_id(workout_id) workout = self.workout_repository.get_workout_by_id(workout_id)
if not workout: if not workout:
return None return None
return workout return workout
# TODO:Workout追加、更新、ジム入退時刻追加更新