1from __future__ import annotations
2
3from datetime import datetime
4
5from plain import models
6from plain.models import types
7
8
9@models.register_model
10class Session(models.Model):
11 session_key: str = types.CharField(max_length=40)
12 session_data: dict = types.JSONField(default=dict, required=False)
13 created_at: datetime = types.DateTimeField(auto_now_add=True)
14 expires_at: datetime | None = types.DateTimeField(allow_null=True)
15
16 query: models.QuerySet[Session] = models.QuerySet()
17
18 model_options = models.Options(
19 indexes=[
20 models.Index(fields=["expires_at"]),
21 ],
22 constraints=[
23 models.UniqueConstraint(fields=["session_key"], name="unique_session_key")
24 ],
25 )
26
27 def __str__(self) -> str:
28 return self.session_key