# [START imports]
from anom import Model, props
from bottle import get, post, redirect, request, run, view
# [END imports]


# [START guestbook-entry-model]
class GuestbookEntry(Model):
    author = props.String(optional=True)
    message = props.Text()
    created_at = props.DateTime(indexed=True, auto_now_add=True)
# [END guestbook-entry-model]


# [START index-route]
@get("/")
@view("index")
def index():
    cursor = request.params.cursor
    pages = GuestbookEntry.query().order_by(-GuestbookEntry.created_at).paginate(page_size=1, cursor=cursor)
    return {"pages": pages}
# [END index-route]


# [START sign-route]
@post("/sign")
def sign():
    author = request.forms.author
    message = request.forms.message
    if not author or not message:
        return "<em>You must provide a message!</em>"

    GuestbookEntry(author=author, message=message).put()
    return redirect("/")
# [END sign-route]


# [START delete-route]
@post("/delete/<entry_id:int>")
def delete(entry_id):
    entry = GuestbookEntry.get(entry_id)
    if not entry:
        return "<h1>Entry not found.</h1>"

    entry.delete()
    return redirect("/")
# [END delete-route]


# [START run]
run(host="localhost", port=8080, debug=True, reloader=True)
# [END run]