Files
soleprint/cfg/amar/models/django/models.py
2025-12-31 09:07:27 -03:00

192 lines
8.0 KiB
Python

"""
Django models - Generated from schema.json
DO NOT EDIT MANUALLY - Regenerate from schema.json
"""
from django.db import models
class Status(models.TextChoices):
PENDING = "pending", "Pending"
PLANNED = "planned", "Planned"
BUILDING = "building", "Building"
DEV = "dev", "Dev"
LIVE = "live", "Live"
READY = "ready", "Ready"
class System(models.TextChoices):
ARTERY = "artery", "Artery"
ALBUM = "album", "Album"
WARD = "ward", "Ward"
# === Shared Components ===
class Nest(models.Model):
"""Runtime environment configuration. Shared across artery, ward."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="nests")
config_path = models.CharField(max_length=255, blank=True, null=True)
class Meta:
db_table = "pawprint_nest"
def __str__(self):
return self.title
class Larder(models.Model):
"""Data storage. When generated from Template = 'Book (written)'. Independent in ward/artery."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="larders")
source_template = models.CharField(max_length=255, blank=True, null=True, help_text="Template name if generated")
data_path = models.CharField(max_length=255, blank=True, null=True, help_text="Path to data files")
class Meta:
db_table = "pawprint_larder"
def __str__(self):
return self.title
# === System-Specific Components ===
class Vein(models.Model):
"""Connector (artery). Single responsibility."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="veins")
system = models.CharField(max_length=20, default="artery", editable=False)
class Meta:
db_table = "pawprint_vein"
def __str__(self):
return self.title
class Template(models.Model):
"""Documentation template (album). Gherkin, BDD patterns."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="templates")
template_path = models.CharField(max_length=255, blank=True, null=True, help_text="Path to template files")
system = models.CharField(max_length=20, default="album", editable=False)
class Meta:
db_table = "pawprint_template"
def __str__(self):
return self.title
class Tool(models.Model):
"""Execution tool (ward). Test runners, seeders."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="tools")
system = models.CharField(max_length=20, default="ward", editable=False)
class Meta:
db_table = "pawprint_tool"
def __str__(self):
return self.title
class Monitor(models.Model):
"""Service monitor (ward). Health checks, status watchers."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="monitors")
system = models.CharField(max_length=20, default="ward", editable=False)
class Meta:
db_table = "pawprint_monitor"
def __str__(self):
return self.title
class Cabinet(models.Model):
"""Tool cabinet (ward). Contains 0+ tools."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="cabinets")
tools = models.ManyToManyField(Tool, blank=True)
system = models.CharField(max_length=20, default="ward", editable=False)
class Meta:
db_table = "pawprint_cabinet"
def __str__(self):
return self.title
# === Composed Types ===
class Pulse(models.Model):
"""Composed data flow (artery). Pulse = Vein + Nest + Larder."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses")
vein = models.ForeignKey(Vein, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses")
nest = models.ForeignKey(Nest, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses")
larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="pulses")
system = models.CharField(max_length=20, default="artery", editable=False)
class Meta:
db_table = "pawprint_pulse"
def __str__(self):
return self.title
class Book(models.Model):
"""Composed documentation (album). Book = Template + Larder."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="books")
template = models.ForeignKey(Template, on_delete=models.SET_NULL, blank=True, null=True, related_name="books")
larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="books")
output_larder = models.ForeignKey(Larder, on_delete=models.SET_NULL, blank=True, null=True, related_name="books")
system = models.CharField(max_length=20, default="album", editable=False)
class Meta:
db_table = "pawprint_book"
def __str__(self):
return self.title
class Table(models.Model):
"""Composed execution bundle (ward). Table = Cabinet + Nest + Larders."""
name = models.CharField(max_length=255, help_text="Unique identifier")
slug = models.SlugField(max_length=255, unique=True, help_text="URL-friendly identifier")
title = models.CharField(max_length=255, help_text="Display title for UI")
status = models.ForeignKey(Status, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables")
cabinet = models.ForeignKey(Cabinet, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables")
nest = models.ForeignKey(Nest, on_delete=models.SET_NULL, blank=True, null=True, related_name="tables")
larders = models.ManyToManyField(Larder, blank=True)
system = models.CharField(max_length=20, default="ward", editable=False)
class Meta:
db_table = "pawprint_table"
def __str__(self):
return self.title