# Generated by Django 5.2.12 on 2026-03-11 11:29 import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ("projects", "0001_initial"), ("tags", "0001_initial"), ("workspaces", "0001_initial"), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="TimeEntry", fields=[ ( "id", models.UUIDField( default=uuid.uuid7, primary_key=True, serialize=False ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("deleted_at", models.DateTimeField(blank=True, null=True)), ("is_deleted", models.BooleanField(default=False)), ("is_active", models.BooleanField(default=False)), ("description", models.TextField(blank=True)), ("start_time", models.DateTimeField()), ("end_time", models.DateTimeField(blank=True, null=True)), ("duration", models.DurationField(blank=True, null=True)), ("is_billable", models.BooleanField(default=False)), ( "hourly_rate", models.DecimalField( blank=True, decimal_places=2, max_digits=10, null=True ), ), ("currency", models.CharField(default="USD", max_length=3)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="created_%(app_label)s_%(class)s_set", to=settings.AUTH_USER_MODEL, ), ), ( "project", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="time_entries", to="projects.project", ), ), ( "tags", models.ManyToManyField( blank=True, related_name="time_entries", to="tags.tag" ), ), ( "updated_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="updated_%(app_label)s_%(class)s_set", to=settings.AUTH_USER_MODEL, ), ), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="time_entries", to=settings.AUTH_USER_MODEL, ), ), ( "workspace", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="time_entries", to="workspaces.workspace", ), ), ], options={ "db_table": "time_entry", "ordering": ("-updated_at", "-created_at"), "indexes": [ models.Index(fields=["workspace"], name="time_entry_workspace_idx"), models.Index(fields=["user"], name="time_entry_user_idx"), models.Index(fields=["project"], name="time_entry_project_idx"), models.Index(fields=["start_time"], name="time_entry_start_idx"), models.Index( fields=["workspace", "start_time"], name="time_entry_workspace_start_idx", ), ], "constraints": [ models.UniqueConstraint( condition=models.Q( ("end_time__isnull", True), ("is_deleted", False) ), fields=("workspace", "user"), name="unique_running_timer_per_user", ) ], }, ), ]