import sqlite3
from flask import Flask, jsonify, request
app = Flask(__name__)
def db():
c = sqlite3.connect("notes.db")
c.row_factory = sqlite3.Row
return c
c = db()
c.executescript("create table if not exists users(id integer primary key, login text); create table if not exists notes(id integer primary key, title text, content text, id_user integer references users(id), created_at date);")
if not c.execute("select 1 from users").fetchone():
c.execute("insert into users values(1,'user25'),(2,'user26')")
c.execute("insert into notes values(1,'Конференция ИТ','Содержимое заметки',1,'2027-04-15'),(2,'Встреча','Обсудить',2,'2027-03-15'),(3,'Продукты','Хлеб',1,'2027-02-10')")
c.commit()
@app.route("/notes")
def notes():
try:
if request.args.get("test_error"):
raise Exception("Ошибка подключения к базе данных")
u = request.args.get("user_id")
if u and not u.isdigit():
return jsonify(error="Некорректный запрос"), 400
q = "select n.*, u.login from notes n join users u on u.id=n.id_user"
rows = db().execute(q + (" where n.id_user=?" if u else ""), (u,) if u else ()).fetchall()
out = []
for r in rows:
y, m, d = r["created_at"].split("-")
out.append({"id": str(r["id"]).zfill(5), "title_user": r["title"] + " - " + r["login"], "content": r["content"], "formatted_date": d + "." + m + "." + y})
return jsonify(out)
except Exception as e:
return jsonify(error=str(e)), 500
app.run(port=3000)