dnf
This commit is contained in:
1 parent
0c3425b4c7
commit
6db8c9b413
10 files changed
+2046
No files matched your search
Executable
+199
@@ -0,0 +1,199 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'''
|
||||
|
||||
Dendrachy Network File-System (dnfs)
|
||||
|
||||
树状网络文件系统
|
||||
|
||||
|
||||
|
||||
可能加入数据库加密功能。
|
||||
|
||||
'''
|
||||
|
||||
from flask import Flask, request, jsonify, render_template
|
||||
from flask_cors import CORS
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from waitress import serve
|
||||
import os
|
||||
|
||||
basedir = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'notes.db')
|
||||
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
|
||||
db = SQLAlchemy(app)
|
||||
|
||||
class Note(db.Model):
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
|
||||
pid = db.Column(db.Integer, nullable=False)
|
||||
|
||||
title = db.Column(db.String(128), nullable=False)
|
||||
|
||||
content = db.Column(db.Text, nullable=False)
|
||||
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
return f"<Node {self.title}>"
|
||||
|
||||
with app.app_context():
|
||||
|
||||
db.create_all()
|
||||
|
||||
|
||||
|
||||
# eg: {
|
||||
# "pid": "0",
|
||||
# "title": "test",
|
||||
# "content": "hello"
|
||||
#}
|
||||
@app.route('/add_note', methods=['POST'])
|
||||
|
||||
def add_note():
|
||||
|
||||
data = request.get_json()
|
||||
|
||||
pid = data.get('pid')
|
||||
|
||||
title = data.get('title')
|
||||
|
||||
content = data.get('content')
|
||||
|
||||
if pid is None or not title or not content:
|
||||
|
||||
return jsonify({"error": "Pid, title and content are required"}), 400
|
||||
|
||||
new_note = Note(pid=int(pid), title=title, content=content)
|
||||
|
||||
with app.app_context():
|
||||
|
||||
db.session.add(new_note)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({"message": "Note added successfully"}), 200
|
||||
|
||||
|
||||
# {“pid”: "0"}
|
||||
@app.route('/get_notes', methods=["POST"])
|
||||
|
||||
def get_notes():
|
||||
|
||||
data = request.get_json()
|
||||
|
||||
pid = data.get('pid')
|
||||
|
||||
if not pid:
|
||||
|
||||
pid = 0
|
||||
|
||||
with app.app_context():
|
||||
|
||||
notes = Note.query.filter(Note.pid == int(pid))
|
||||
|
||||
result = [{'id': note.id, 'pid': note.pid, 'title': note.title, 'content':note.content} for note in notes]
|
||||
|
||||
return jsonify(result), 200
|
||||
|
||||
|
||||
# eg: {"id": "1"}
|
||||
@app.route('/delete_note', methods=['POST'])
|
||||
|
||||
def delete_note():
|
||||
|
||||
data = request.get_json()
|
||||
|
||||
note_id = data.get('id')
|
||||
|
||||
if not note_id:
|
||||
|
||||
return jsonify({"error": "Note ID is required"}), 400
|
||||
|
||||
with app.app_context():
|
||||
|
||||
note = Note.query.get(note_id)
|
||||
|
||||
if note:
|
||||
|
||||
db.session.delete(note)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': "Note deleted successfully"}), 200
|
||||
|
||||
else:
|
||||
|
||||
return jsonify({"error": "Note not found"}), 404
|
||||
|
||||
|
||||
# eg: {
|
||||
# "id": "1",
|
||||
# "pid": "0",
|
||||
# "title": "test",
|
||||
# "content": "hello"
|
||||
#}
|
||||
@app.route('/update_note', methods=['POST'])
|
||||
|
||||
def update_note():
|
||||
|
||||
data = request.get_json()
|
||||
|
||||
id = data.get('id')
|
||||
|
||||
pid = data.get('pid')
|
||||
|
||||
title = data.get('title')
|
||||
|
||||
content = data.get('content')
|
||||
|
||||
if id is None or pid is None or not title or not content:
|
||||
|
||||
return jsonify({"error": "Invalid param"}), 400
|
||||
|
||||
with app.app_context():
|
||||
|
||||
note = Note.query.get(id)
|
||||
|
||||
if note:
|
||||
|
||||
note.pid = pid
|
||||
|
||||
note.title = title
|
||||
|
||||
note.content = content
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': "Your change is up-to-date."}), 200
|
||||
|
||||
else:
|
||||
|
||||
return jsonify({'error': 'Note not found'}), 400
|
||||
|
||||
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def view_page():
|
||||
"""返回应用主页"""
|
||||
return render_template('index.html')
|
||||
|
||||
ADDR='127.0.0.1'
|
||||
PORT=8006
|
||||
if __name__ == "__main__":
|
||||
print(f'Listen at http://{ADDR}:{PORT}')
|
||||
#app.run(host="127.0.0.1", port=8006)
|
||||
serve(app, host='127.0.0.1', port=8006)
|
||||
Reference in new issue
Block a user