api-drf-1/api/models.py
2025-04-06 04:59:28 +09:00

36 lines
No EOL
1.5 KiB
Python

import uuid
from django.db import models
from django.contrib.auth import get_user_model
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
satellites = models.ManyToManyField("Satellite", related_name="users")
class Prediction(models.Model):
satellite = models.ForeignKey('Satellite', on_delete=models.CASCADE, related_name='predictions', null=True)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
result = models.JSONField()
deleted_at = models.DateTimeField(null=True, blank=True)
class UserPrediction(models.Model):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
prediction = models.ForeignKey("Prediction", on_delete=models.CASCADE)
created_at = models.DateTimeField()
class Satellite(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100)
class TelemetryPacket(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
satellite = models.ForeignKey(Satellite, on_delete=models.CASCADE, related_name="telemetry")
timestamp = models.BigIntegerField() # unix time
lat = models.FloatField()
lon = models.FloatField()
alt = models.FloatField()
payload = models.JSONField(null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)