Mai2Frontend/backend/app.py

47 lines
1.7 KiB
Python
Raw Normal View History

2024-10-05 00:14:31 +00:00
from flask import Flask, jsonify, request
from flask_cors import CORS
from models import db, AimeCard, Mai2ProfileDetail, Mai2ItemCard
import yaml
with open('config.yaml', 'r') as file:
config = yaml.safe_load(file)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = config['database']['uri']
db.init_app(app)
CORS(app)
@app.route('/api/query', methods=['GET'])
def query_info():
access_code = request.args.get('accesscode')
card = AimeCard.query.filter_by(access_code=access_code).first()
if not card:
return jsonify({'message': 'Access code not found'}), 404
latest_detail = Mai2ProfileDetail.query.filter_by(user=card.user).order_by(Mai2ProfileDetail.id.desc()).first()
item_cards = Mai2ItemCard.query.filter_by(user=card.user).all()
items = [
{'cardId': item.cardId, 'cardTypeId': item.cardTypeId, 'startDate': item.startDate, 'endDate': item.endDate} for
item in item_cards]
response_data = {
'user': card.user,
'details': {
'userName': latest_detail.userName if latest_detail else None,
'playerRating': latest_detail.playerRating if latest_detail else None,
'playCount': latest_detail.playCount if latest_detail else None,
'lastRomVersion': latest_detail.lastRomVersion if latest_detail else None,
'lastDataVersion': latest_detail.lastDataVersion if latest_detail else None,
'banstate': latest_detail.banstate if latest_detail else None,
},
'items': items,
}
return jsonify(response_data)
if __name__ == '__main__':
app.run(host=config['flask']['host'], port=config['flask']['port'], debug=True) # 允许从外部访问