From cd7d7c303ac088131d3f40fa4ba8e24f24724302 Mon Sep 17 00:00:00 2001 From: Jon Young Date: Tue, 16 Jul 2024 09:44:59 -0400 Subject: [PATCH] PRWLR-3997: fix(Models): create BaseModel & TenantModel (#13) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(Models): create BaseModel & TenantModel * update description to match class Co-authored-by: Víctor Fernández Poyatos * fix(Tenants): rename TenantModel to Tenant --------- Co-authored-by: Víctor Fernández Poyatos --- .../api/migrations/0002_tenantmodel.py | 33 +++++++++++++++++++ src/backend/api/models.py | 23 +++++++++++++ src/backend/api/serializers.py | 12 ++++++- 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/backend/api/migrations/0002_tenantmodel.py diff --git a/src/backend/api/migrations/0002_tenantmodel.py b/src/backend/api/migrations/0002_tenantmodel.py new file mode 100644 index 0000000000..9ec4fafb92 --- /dev/null +++ b/src/backend/api/migrations/0002_tenantmodel.py @@ -0,0 +1,33 @@ +# Generated by Django 5.0.7 on 2024-07-12 16:45 + +import uuid +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("api", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="Tenant", + fields=[ + ( + "id", + models.UUIDField( + default=uuid.uuid4, + editable=False, + primary_key=True, + serialize=False, + ), + ), + ("inserted_at", models.DateTimeField(auto_now_add=True)), + ("updated_at", models.DateTimeField(auto_now=True)), + ("name", models.CharField(max_length=100)), + ], + options={ + "abstract": False, + }, + ), + ] diff --git a/src/backend/api/models.py b/src/backend/api/models.py index 7ed846fa3f..2496dcaf19 100644 --- a/src/backend/api/models.py +++ b/src/backend/api/models.py @@ -1,4 +1,27 @@ from django.db import models +import uuid + + +class Base(models.Model): + """ + Abstract base model class that provides common fields for all models. + """ + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + + inserted_at = models.DateTimeField(auto_now_add=True, editable=False) + updated_at = models.DateTimeField(auto_now=True, editable=False) + + class Meta: + abstract = True + + +class Tenant(Base): + """ + The Tenant is the basic grouping in the system. It is used to separate data between customers. + """ + + name = models.CharField(max_length=100) class TestModel(models.Model): diff --git a/src/backend/api/serializers.py b/src/backend/api/serializers.py index d12c18b9b4..5096bd2090 100644 --- a/src/backend/api/serializers.py +++ b/src/backend/api/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from api.models import TestModel +from api.models import TestModel, Tenant class TestModelSerializer(serializers.ModelSerializer): @@ -12,3 +12,13 @@ class TestModelSerializer(serializers.ModelSerializer): class Meta: model = TestModel fields = "__all__" + + +class TenantSerializer(serializers.ModelSerializer): + """ + Serializer for the Tenant model. + """ + + class Meta: + model = Tenant + fields = "__all__"