feat(api): split api into multiple apps (#1626)

Fixes #1622

- split the api into 4 apps: core, history, schedule, storage
- exploded the settings into testing/prod
This commit is contained in:
Jonas L 2022-04-04 14:38:50 +02:00 committed by GitHub
parent 87d2da9d84
commit fce988aef1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
120 changed files with 1499 additions and 1078 deletions

View file

View file

@ -0,0 +1,7 @@
from django.apps import AppConfig
class HistoryConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "libretime_api.history"
verbose_name = "LibreTime History API"

View file

@ -0,0 +1,8 @@
from .listener import ListenerCount, MountName, Timestamp
from .live import LiveLog
from .played import (
PlayoutHistory,
PlayoutHistoryMetadata,
PlayoutHistoryTemplate,
PlayoutHistoryTemplateField,
)

View file

@ -0,0 +1,27 @@
from django.db import models
class MountName(models.Model):
mount_name = models.CharField(max_length=1024)
class Meta:
managed = False
db_table = "cc_mount_name"
class Timestamp(models.Model):
timestamp = models.DateTimeField()
class Meta:
managed = False
db_table = "cc_timestamp"
class ListenerCount(models.Model):
timestamp = models.ForeignKey("Timestamp", models.DO_NOTHING)
mount_name = models.ForeignKey("MountName", models.DO_NOTHING)
listener_count = models.IntegerField()
class Meta:
managed = False
db_table = "cc_listener_count"

View file

@ -0,0 +1,11 @@
from django.db import models
class LiveLog(models.Model):
state = models.CharField(max_length=32)
start_time = models.DateTimeField()
end_time = models.DateTimeField(blank=True, null=True)
class Meta:
managed = False
db_table = "cc_live_log"

View file

@ -0,0 +1,46 @@
from django.db import models
class PlayoutHistory(models.Model):
file = models.ForeignKey("storage.File", models.DO_NOTHING, blank=True, null=True)
starts = models.DateTimeField()
ends = models.DateTimeField(blank=True, null=True)
instance = models.ForeignKey(
"schedule.ShowInstance", models.DO_NOTHING, blank=True, null=True
)
class Meta:
managed = False
db_table = "cc_playout_history"
class PlayoutHistoryMetadata(models.Model):
history = models.ForeignKey("PlayoutHistory", models.DO_NOTHING)
key = models.CharField(max_length=128)
value = models.CharField(max_length=128)
class Meta:
managed = False
db_table = "cc_playout_history_metadata"
class PlayoutHistoryTemplate(models.Model):
name = models.CharField(max_length=128)
type = models.CharField(max_length=35)
class Meta:
managed = False
db_table = "cc_playout_history_template"
class PlayoutHistoryTemplateField(models.Model):
template = models.ForeignKey("PlayoutHistoryTemplate", models.DO_NOTHING)
name = models.CharField(max_length=128)
label = models.CharField(max_length=128)
type = models.CharField(max_length=128)
is_file_md = models.BooleanField()
position = models.IntegerField()
class Meta:
managed = False
db_table = "cc_playout_history_template_field"

View file

@ -0,0 +1,22 @@
from rest_framework import routers
from .views import (
ListenerCountViewSet,
LiveLogViewSet,
MountNameViewSet,
PlayoutHistoryMetadataViewSet,
PlayoutHistoryTemplateFieldViewSet,
PlayoutHistoryTemplateViewSet,
PlayoutHistoryViewSet,
TimestampViewSet,
)
router = routers.DefaultRouter()
router.register("listener-counts", ListenerCountViewSet)
router.register("live-logs", LiveLogViewSet)
router.register("mount-names", MountNameViewSet)
router.register("playout-history", PlayoutHistoryViewSet)
router.register("playout-history-metadata", PlayoutHistoryMetadataViewSet)
router.register("playout-history-templates", PlayoutHistoryTemplateViewSet)
router.register("playout-history-template-fields", PlayoutHistoryTemplateFieldViewSet)
router.register("timestamps", TimestampViewSet)

View file

@ -0,0 +1,8 @@
from .listener import ListenerCountSerializer, MountNameSerializer, TimestampSerializer
from .live import LiveLogSerializer
from .played import (
PlayoutHistoryMetadataSerializer,
PlayoutHistorySerializer,
PlayoutHistoryTemplateFieldSerializer,
PlayoutHistoryTemplateSerializer,
)

View file

@ -0,0 +1,21 @@
from rest_framework import serializers
from ..models import ListenerCount, MountName, Timestamp
class MountNameSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = MountName
fields = "__all__"
class TimestampSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Timestamp
fields = "__all__"
class ListenerCountSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ListenerCount
fields = "__all__"

View file

@ -0,0 +1,9 @@
from rest_framework import serializers
from ..models import LiveLog
class LiveLogSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = LiveLog
fields = "__all__"

View file

@ -0,0 +1,32 @@
from rest_framework import serializers
from ..models import (
PlayoutHistory,
PlayoutHistoryMetadata,
PlayoutHistoryTemplate,
PlayoutHistoryTemplateField,
)
class PlayoutHistorySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PlayoutHistory
fields = "__all__"
class PlayoutHistoryMetadataSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PlayoutHistoryMetadata
fields = "__all__"
class PlayoutHistoryTemplateSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PlayoutHistoryTemplate
fields = "__all__"
class PlayoutHistoryTemplateFieldSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = PlayoutHistoryTemplateField
fields = "__all__"

View file

@ -0,0 +1,8 @@
from .listener import ListenerCountViewSet, MountNameViewSet, TimestampViewSet
from .live import LiveLogViewSet
from .played import (
PlayoutHistoryMetadataViewSet,
PlayoutHistoryTemplateFieldViewSet,
PlayoutHistoryTemplateViewSet,
PlayoutHistoryViewSet,
)

View file

@ -0,0 +1,26 @@
from rest_framework import viewsets
from ..models import ListenerCount, MountName, Timestamp
from ..serializers import (
ListenerCountSerializer,
MountNameSerializer,
TimestampSerializer,
)
class MountNameViewSet(viewsets.ModelViewSet):
queryset = MountName.objects.all()
serializer_class = MountNameSerializer
model_permission_name = "mountname"
class TimestampViewSet(viewsets.ModelViewSet):
queryset = Timestamp.objects.all()
serializer_class = TimestampSerializer
model_permission_name = "timestamp"
class ListenerCountViewSet(viewsets.ModelViewSet):
queryset = ListenerCount.objects.all()
serializer_class = ListenerCountSerializer
model_permission_name = "listenercount"

View file

@ -0,0 +1,10 @@
from rest_framework import viewsets
from ..models import LiveLog
from ..serializers import LiveLogSerializer
class LiveLogViewSet(viewsets.ModelViewSet):
queryset = LiveLog.objects.all()
serializer_class = LiveLogSerializer
model_permission_name = "livelog"

View file

@ -0,0 +1,38 @@
from rest_framework import viewsets
from ..models import (
PlayoutHistory,
PlayoutHistoryMetadata,
PlayoutHistoryTemplate,
PlayoutHistoryTemplateField,
)
from ..serializers import (
PlayoutHistoryMetadataSerializer,
PlayoutHistorySerializer,
PlayoutHistoryTemplateFieldSerializer,
PlayoutHistoryTemplateSerializer,
)
class PlayoutHistoryViewSet(viewsets.ModelViewSet):
queryset = PlayoutHistory.objects.all()
serializer_class = PlayoutHistorySerializer
model_permission_name = "playouthistory"
class PlayoutHistoryMetadataViewSet(viewsets.ModelViewSet):
queryset = PlayoutHistoryMetadata.objects.all()
serializer_class = PlayoutHistoryMetadataSerializer
model_permission_name = "playouthistorymetadata"
class PlayoutHistoryTemplateViewSet(viewsets.ModelViewSet):
queryset = PlayoutHistoryTemplate.objects.all()
serializer_class = PlayoutHistoryTemplateSerializer
model_permission_name = "playouthistorytemplate"
class PlayoutHistoryTemplateFieldViewSet(viewsets.ModelViewSet):
queryset = PlayoutHistoryTemplateField.objects.all()
serializer_class = PlayoutHistoryTemplateFieldSerializer
model_permission_name = "playouthistorytemplatefield"