feat: implement backend with Flask for game collection management using SQLite database

This commit is contained in:
Manuel Weiser 2024-09-02 09:02:32 +02:00
parent 2a0512d094
commit e61fac0b34
5 changed files with 76 additions and 0 deletions

5
Verzeichnisstruktur Normal file
View File

@ -0,0 +1,5 @@
/game_collection
├── app.py
├── models.py
├── database.py
└── requirements.txt

41
game_collection/app.py Normal file
View File

@ -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)

View File

@ -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()

11
game_collection/models.py Normal file
View File

@ -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)

View File

@ -0,0 +1,2 @@
Flask
Flask-SQLAlchemy