All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
from django.db import models
|
|
|
|
|
|
class EphemerisSnapshot(models.Model):
|
|
"""Pre-computed chart data for a single point in time.
|
|
|
|
Element counts are stored as denormalised columns for fast DB-level range
|
|
filtering. Full planet/house data lives in chart_data (JSONField) for
|
|
response serialisation.
|
|
"""
|
|
|
|
dt = models.DateTimeField(unique=True, db_index=True)
|
|
|
|
# Denormalised element counts — indexed for range queries
|
|
fire = models.PositiveSmallIntegerField()
|
|
water = models.PositiveSmallIntegerField()
|
|
earth = models.PositiveSmallIntegerField()
|
|
air = models.PositiveSmallIntegerField()
|
|
time_el = models.PositiveSmallIntegerField()
|
|
space_el = models.PositiveSmallIntegerField()
|
|
|
|
# Full chart payload
|
|
chart_data = models.JSONField()
|
|
|
|
class Meta:
|
|
ordering = ['dt']
|
|
|
|
def elements_dict(self):
|
|
return {
|
|
'Fire': self.fire,
|
|
'Water': self.water,
|
|
'Earth': self.earth,
|
|
'Air': self.air,
|
|
'Time': self.time_el,
|
|
'Space': self.space_el,
|
|
}
|