from flask import render_template, redirect, url_for, request, flash
from blog import app, db
from blog.models.entries import Entry
from blog.views.auth import login_required

@app.route("/")
@login_required
def show_entries():
    entries = Entry.query.order_by(Entry.id.desc()).all()
    return render_template('entries/index.html', entries=entries)

@app.route("/entries/new", methods=['GET'])
@login_required
def new_entry():
    return render_template('entries/new.html')

@app.route("/entries", methods=["POST"])
@login_required
def add_entry():
    entry = Entry(
        title=request.form['title'],
        text=request.form['text']
    )
    db.session.add(entry)
    db.session.commit()
    flash('新しく記事が作成されました')
    return redirect(url_for("show_entries"))

@app.route("/entries/<int:id>", methods=["GET"])
@login_required
def show_entry(id):
    entry = Entry.query.get(id)
    return render_template("entries/show.html", entry=entry)

@app.route('/entries/<int:id>/edit', methods=['GET'])
@login_required
def edit_entry(id):
    entry = Entry.query.get(id)
    return render_template('entries/edit.html', entry=entry)

@app.route("/entries/<int:id>/update", methods=['POST'])
@login_required
def update_entry(id):
    entry = Entry.query.get(id)
    entry.title = request.form['title']
    entry.text = request.form['text']
    db.session.merge(entry)
    db.session.commit()
    flash('記事が更新されました')
    return redirect(url_for('show_entries'))

@app.route("/entries/<int:id>/delete", methods=["POST"])
@login_required
def delete_entry(id):
    entry = Entry.query.get(id)
    db.session.delete(entry)
    db.session.commit()
    flash('記事が削除されました')
    return redirect(url_for("show_entries"))