From e61fac0b344ae2a7029f99aa601eb7388193820e Mon Sep 17 00:00:00 2001 From: "Manuel Weiser (aider)" Date: Mon, 2 Sep 2024 09:02:32 +0200 Subject: [PATCH] feat: implement backend with Flask for game collection management using SQLite database --- Verzeichnisstruktur | 5 ++++ game_collection/app.py | 41 ++++++++++++++++++++++++++++++++ game_collection/database.py | 17 +++++++++++++ game_collection/models.py | 11 +++++++++ game_collection/requirements.txt | 2 ++ 5 files changed, 76 insertions(+) create mode 100644 Verzeichnisstruktur create mode 100644 game_collection/app.py create mode 100644 game_collection/database.py create mode 100644 game_collection/models.py create mode 100644 game_collection/requirements.txt diff --git a/Verzeichnisstruktur b/Verzeichnisstruktur new file mode 100644 index 0000000..d857da2 --- /dev/null +++ b/Verzeichnisstruktur @@ -0,0 +1,5 @@ +/game_collection + ├── app.py + ├── models.py + ├── database.py + └── requirements.txt diff --git a/game_collection/app.py b/game_collection/app.py new file mode 100644 index 0000000..adf281a --- /dev/null +++ b/game_collection/app.py @@ -0,0 +1,41 @@ +from flask import Flask, request, jsonify +from flask_sqlalchemy import SQLAlchemy +from database import init_db +from models import db, Game + +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///games.db' +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db.init_app(app) + +with app.app_context(): + init_db() + +@app.route('/games', methods=['POST']) +def add_game(): + data = request.json + new_game = Game( + image=data['image'], + title=data['title'], + date=data['date'], + buyer=data['buyer'], + owned=data['owned'] + ) + db.session.add(new_game) + db.session.commit() + return jsonify({'message': 'Game added!'}), 201 + +@app.route('/games', methods=['GET']) +def get_games(): + games = Game.query.all() + return jsonify([{ + 'id': game.id, + 'image': game.image, + 'title': game.title, + 'date': game.date, + 'buyer': game.buyer, + 'owned': game.owned + } for game in games]) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/game_collection/database.py b/game_collection/database.py new file mode 100644 index 0000000..5d2ff0e --- /dev/null +++ b/game_collection/database.py @@ -0,0 +1,17 @@ +import sqlite3 + +def init_db(): + conn = sqlite3.connect('games.db') + cursor = conn.cursor() + cursor.execute(''' + CREATE TABLE IF NOT EXISTS games ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + image TEXT, + title TEXT NOT NULL, + date TEXT, + buyer TEXT, + owned BOOLEAN NOT NULL + ) + ''') + conn.commit() + conn.close() diff --git a/game_collection/models.py b/game_collection/models.py new file mode 100644 index 0000000..5a4406d --- /dev/null +++ b/game_collection/models.py @@ -0,0 +1,11 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +class Game(db.Model): + id = db.Column(db.Integer, primary_key=True) + image = db.Column(db.String(255)) + title = db.Column(db.String(100), nullable=False) + date = db.Column(db.String(10)) + buyer = db.Column(db.String(100)) + owned = db.Column(db.Boolean, nullable=False) diff --git a/game_collection/requirements.txt b/game_collection/requirements.txt new file mode 100644 index 0000000..fb675a9 --- /dev/null +++ b/game_collection/requirements.txt @@ -0,0 +1,2 @@ +Flask +Flask-SQLAlchemy