Source code for app.model.orm.page_visit

from datetime import datetime
from urllib.parse import parse_qs

import sqlalchemy as sql
from sqlalchemy.orm import (
    Mapped,
    mapped_column,
)
from sqlalchemy_utc.sqltypes import UtcDateTime

from app.model.orm.orm_base import OrmBase


[docs] class PageVisit(OrmBase): """ A record of a single visit of a page in the app, intended to be aggregated into counts and deleted on a regular basis. """
[docs] __tablename__ = 'PageVisits'
[docs] id: Mapped[int] = mapped_column(primary_key=True)
[docs] path: Mapped[str] = mapped_column(sql.String(255))
[docs] query: Mapped[str] = mapped_column(sql.String(255))
[docs] referrer: Mapped[str] = mapped_column(sql.String(255))
[docs] ip: Mapped[str] = mapped_column(sql.String(100))
[docs] country: Mapped[str] = mapped_column(sql.String(255))
[docs] userAgent: Mapped[str] = mapped_column(sql.String)
[docs] uuid: Mapped[str] = mapped_column(sql.String(36))
[docs] isUser: Mapped[bool] = mapped_column(sql.Boolean, default=False)
[docs] isAdmin: Mapped[bool] = mapped_column(sql.Boolean, default=False)
[docs] isBot: Mapped[bool] = mapped_column(sql.Boolean, default=False)
[docs] createdAt: Mapped[datetime] = mapped_column(UtcDateTime, server_default=sql.FetchedValue())
@property
[docs] def parsedQuery(self): if self.query is None: return None return parse_qs(self.query)