update logging
This commit is contained in:
38
app/crud.py
38
app/crud.py
@@ -1,6 +1,8 @@
|
|||||||
import app.models as models
|
import app.models as models
|
||||||
from sqlalchemy import func
|
from sqlalchemy import func, and_
|
||||||
from sqlalchemy.orm.attributes import flag_modified
|
from sqlalchemy.orm.attributes import flag_modified
|
||||||
|
from starlette_context import context
|
||||||
|
from starlette_context.header_keys import HeaderKeys
|
||||||
|
|
||||||
|
|
||||||
def get_songs_and_vote_for_session(db, session_name) -> list[models.Song]:
|
def get_songs_and_vote_for_session(db, session_name) -> list[models.Song]:
|
||||||
@@ -80,6 +82,7 @@ def create_or_update_vote(db, song_id, session_name, vote):
|
|||||||
db.add(vote_entry)
|
db.add(vote_entry)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
def create_or_update_comment(db, song_id, session_name, comment):
|
def create_or_update_comment(db, song_id, session_name, comment):
|
||||||
session_entry = activate_session(db, session_name)
|
session_entry = activate_session(db, session_name)
|
||||||
|
|
||||||
@@ -96,14 +99,20 @@ def create_or_update_comment(db, song_id, session_name, comment):
|
|||||||
db.add(vote_entry)
|
db.add(vote_entry)
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
|
|
||||||
def activate_session(db, session_name):
|
def activate_session(db, session_name):
|
||||||
session_entry = db.query(models.Session).filter(
|
ip = context.data[HeaderKeys.forwarded_for]
|
||||||
(models.Session.session_name == session_name)).first()
|
|
||||||
|
session_entry = db.query(models.Session).filter(and_(
|
||||||
|
models.Session.session_name == session_name, models.Session.ip == ip)).first()
|
||||||
if session_entry:
|
if session_entry:
|
||||||
|
print(session_entry.__dict__)
|
||||||
session_entry.active = True
|
session_entry.active = True
|
||||||
else:
|
else:
|
||||||
session_entry = models.Session(session_name=session_name, active=True)
|
session_entry = models.Session(
|
||||||
|
session_name=session_name, active=True, ip=ip)
|
||||||
db.add(session_entry)
|
db.add(session_entry)
|
||||||
|
|
||||||
flag_modified(session_entry, "active")
|
flag_modified(session_entry, "active")
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
||||||
@@ -111,25 +120,32 @@ def activate_session(db, session_name):
|
|||||||
|
|
||||||
|
|
||||||
def deactivate_session(db, session_name):
|
def deactivate_session(db, session_name):
|
||||||
session_entry = db.query(models.Session).filter(
|
ip = context.data[HeaderKeys.forwarded_for]
|
||||||
(models.Session.session_name == session_name)).first()
|
|
||||||
|
session_entry = db.query(models.Session).filter(and_(
|
||||||
|
models.Session.session_name == session_name, models.Session.ip == ip)).first()
|
||||||
if session_entry:
|
if session_entry:
|
||||||
session_entry.active = False
|
session_entry.active = False
|
||||||
else:
|
flag_modified(session_entry, "active")
|
||||||
session_entry = models.Session(session_name=session_name, active=False)
|
|
||||||
db.add(session_entry)
|
|
||||||
db.commit()
|
db.commit()
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
# session_entry = models.Session(session_name=session_name, ip=ip, active=False)
|
||||||
|
# db.add(session_entry)
|
||||||
|
|
||||||
|
|
||||||
def get_setting(db, key):
|
def get_setting(db, key):
|
||||||
entry = db.query(models.Config.value).filter(models.Config.key == key).first()
|
entry = db.query(models.Config.value).filter(
|
||||||
|
models.Config.key == key).first()
|
||||||
if entry:
|
if entry:
|
||||||
return entry[0]
|
return entry[0]
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def set_setting(db, key, value):
|
def set_setting(db, key, value):
|
||||||
setting_entry = db.query(models.Config).filter(models.Config.key == key).first()
|
setting_entry = db.query(models.Config).filter(
|
||||||
|
models.Config.key == key).first()
|
||||||
if setting_entry:
|
if setting_entry:
|
||||||
setting_entry.value = value
|
setting_entry.value = value
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -22,5 +22,6 @@ async def get_db():
|
|||||||
class Base(DeclarativeBase):
|
class Base(DeclarativeBase):
|
||||||
type_annotation_map = {
|
type_annotation_map = {
|
||||||
dict[str, bool]: PickleType,
|
dict[str, bool]: PickleType,
|
||||||
object: PickleType
|
object: PickleType,
|
||||||
|
set: PickleType
|
||||||
}
|
}
|
||||||
16
app/main.py
16
app/main.py
@@ -10,9 +10,23 @@ from typing import Annotated
|
|||||||
from app.schemas import Song
|
from app.schemas import Song
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
from starlette.middleware import Middleware
|
||||||
|
|
||||||
|
from starlette_context import context, plugins
|
||||||
|
from starlette_context.middleware import RawContextMiddleware
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
||||||
app = FastAPI()
|
middleware = [
|
||||||
|
Middleware(
|
||||||
|
RawContextMiddleware,
|
||||||
|
plugins=(
|
||||||
|
plugins.ForwardedForPlugin(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
app = FastAPI(middleware=middleware)
|
||||||
|
|
||||||
app.include_router(admin.router)
|
app.include_router(admin.router)
|
||||||
app.include_router(user.router)
|
app.include_router(user.router)
|
||||||
|
|||||||
@@ -30,10 +30,11 @@ class Song(Base):
|
|||||||
class Session(Base):
|
class Session(Base):
|
||||||
__tablename__ = 'sessions'
|
__tablename__ = 'sessions'
|
||||||
id: Mapped[int] = mapped_column(primary_key=True)
|
id: Mapped[int] = mapped_column(primary_key=True)
|
||||||
session_name: Mapped[int]
|
session_name: Mapped[str]
|
||||||
active: Mapped[bool]
|
active: Mapped[bool]
|
||||||
time_created: Mapped[datetime] = mapped_column(server_default=func.now())
|
ip: Mapped[str]
|
||||||
time_updated: Mapped[Optional[datetime]
|
first_seen: Mapped[datetime] = mapped_column(server_default=func.now())
|
||||||
|
last_seen: Mapped[Optional[datetime]
|
||||||
] = mapped_column(onupdate=func.now())
|
] = mapped_column(onupdate=func.now())
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends, Request
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
import app.models as models
|
import app.models as models
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
from typing import Annotated
|
from typing import Annotated
|
||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends, Request
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
import app.models as models
|
import app.models as models
|
||||||
|
|||||||
@@ -9,3 +9,4 @@ python-multipart
|
|||||||
jinja2
|
jinja2
|
||||||
openpyxl
|
openpyxl
|
||||||
requests
|
requests
|
||||||
|
starlette-context
|
||||||
Reference in New Issue
Block a user