"""Piezas de modelo compartidas por todas las aplicaciones."""

import uuid

from django.db import models


class BaseModel(models.Model):
    """
    Base de toda tabla del sistema.

    La clave es un UUID y no un entero autoincremental porque varios de estos
    identificadores viajan por la API pública y aparecen en URLs: un entero
    secuencial delata el volumen de la instalación y permite recorrer los
    recursos de otra cuenta probando números.

    Las dos marcas de tiempo van acá porque el modelo de datos las exige en
    todas las tablas, y repetirlas en cada clase invita a que alguna quede sin
    ellas.
    """

    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)

    class Meta:
        abstract = True
