Files

49 lines
1.9 KiB
Python

from django.conf import settings
from django.db import models
class UserTablePreference(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="table_preferences")
table_key = models.CharField(max_length=120)
page_size = models.PositiveIntegerField(null=True, blank=True)
column_settings = models.JSONField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "user_table_preferences"
constraints = [
models.UniqueConstraint(fields=["user", "table_key"], name="utp_user_table_uniq"),
]
indexes = [
models.Index(fields=["user", "table_key"], name="utp_user_table_idx"),
]
def __str__(self):
return f"{self.user_id}:{self.table_key}"
class SavedTableFilter(models.Model):
class Visibility(models.TextChoices):
PRIVATE = "private", "Private"
SHARED = "shared", "Shared"
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="saved_table_filters")
table_key = models.CharField(max_length=120)
name = models.CharField(max_length=120)
state = models.JSONField(default=dict)
visibility = models.CharField(max_length=20, choices=Visibility.choices, default=Visibility.PRIVATE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = "saved_table_filters"
ordering = ["-updated_at", "-id"]
indexes = [
models.Index(fields=["table_key", "visibility"], name="stf_table_visibility_idx"),
models.Index(fields=["owner", "table_key"], name="stf_owner_table_idx"),
]
def __str__(self):
return f"{self.name} ({self.table_key})"