feat: minimum working comments app
Python Lint CI / ty (push) Successful in 58s
TS Lint / ESLint (push) Successful in 58s
Python Lint CI / ruff (push) Successful in 58s
Python Lint CI / ruff-format-check (push) Successful in 58s
TS Lint / TypeScript (push) Successful in 3m28s
TS Lint / Oxlint (push) Successful in 3m28s
Python Lint CI / ty (push) Successful in 58s
TS Lint / ESLint (push) Successful in 58s
Python Lint CI / ruff (push) Successful in 58s
Python Lint CI / ruff-format-check (push) Successful in 58s
TS Lint / TypeScript (push) Successful in 3m28s
TS Lint / Oxlint (push) Successful in 3m28s
This commit is contained in:
+8
-2
@@ -25,9 +25,15 @@ class Database:
|
||||
)
|
||||
|
||||
def init(self) -> typing.Self:
|
||||
self.logger.info("Initializing database")
|
||||
tortoise.run_async(tortoise.Tortoise.init(config=self.config))
|
||||
self.logger.info("Migrating database")
|
||||
tortoise.run_async(tortoise.migrations.api.migrate(config=self.config))
|
||||
self.logger.info("Initializing database")
|
||||
tortoise.run_async(
|
||||
tortoise.Tortoise.init(config=self.config, _enable_global_fallback=True)
|
||||
)
|
||||
self.logger.info("Database ready")
|
||||
return self
|
||||
|
||||
def __enter__(self) -> typing.Self:
|
||||
|
||||
return self
|
||||
|
||||
+19
-1
@@ -1,9 +1,11 @@
|
||||
import logging
|
||||
import typing
|
||||
|
||||
import flask
|
||||
import gunicorn.app.base
|
||||
|
||||
from app import PKG_NAME
|
||||
from app.models.comment import Comment
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from app.params import Parameters
|
||||
@@ -21,6 +23,7 @@ class Server(gunicorn.app.base.BaseApplication):
|
||||
PKG_NAME, static_folder="dist/assets", template_folder="dist"
|
||||
)
|
||||
self._index_content: str | None = None
|
||||
self.logger: logging.Logger = logging.getLogger(self.__class__.__name__)
|
||||
super().__init__()
|
||||
|
||||
def register_routes(self) -> typing.Self:
|
||||
@@ -28,6 +31,16 @@ class Server(gunicorn.app.base.BaseApplication):
|
||||
def index() -> str:
|
||||
return flask.render_template("index.html")
|
||||
|
||||
@self.app.route("/api/comments", methods=["GET"])
|
||||
async def get_comments() -> list:
|
||||
return await Comment.all().order_by("created_at").values()
|
||||
|
||||
@self.app.route("/api/comments", methods=["POST"])
|
||||
async def post_comment() -> tuple[str, int]:
|
||||
data = flask.request.get_json()
|
||||
await Comment.create(content=data["content"])
|
||||
return ("", 204)
|
||||
|
||||
return self
|
||||
|
||||
@typing.override
|
||||
@@ -48,5 +61,10 @@ class Server(gunicorn.app.base.BaseApplication):
|
||||
self.run()
|
||||
else:
|
||||
self.app.run(
|
||||
host=self.bind, port=self.port, debug=self.debug, load_dotenv=False
|
||||
host=self.bind,
|
||||
port=self.port,
|
||||
debug=self.debug,
|
||||
load_dotenv=False,
|
||||
use_evalex=False,
|
||||
use_reloader=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user