Source code for app.model.orm.page_visit_counter

import json
from datetime import datetime

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 PageVisitCounter(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__ = 'PageVisitCounters'
[docs] id: Mapped[int] = mapped_column(primary_key=True)
[docs] paths: Mapped[sql.JSON] = mapped_column(sql.JSON, nullable=False)
[docs] countries: Mapped[sql.JSON] = mapped_column(sql.JSON, nullable=False)
[docs] totalVisitCount: Mapped[int] = mapped_column(sql.Integer, nullable=False)
[docs] totalBotVisitCount: Mapped[int] = mapped_column(sql.Integer, nullable=False)
[docs] totalVisitorCount: Mapped[int] = mapped_column(sql.Integer, nullable=False)
[docs] totalUserCount: Mapped[int] = mapped_column(sql.Integer, nullable=False)
[docs] totalApiVisitCount: Mapped[int] = mapped_column(sql.Integer, nullable=False)
[docs] startTimestamp: Mapped[datetime] = mapped_column(UtcDateTime, server_default=sql.FetchedValue())
[docs] endTimestamp: Mapped[datetime] = mapped_column(UtcDateTime, server_default=sql.FetchedValue())
[docs] createdAt: Mapped[datetime] = mapped_column(UtcDateTime, server_default=sql.FetchedValue())