adding
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
# Generated by Django 5.1.15 on 2026-09-02 00:25
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='AppSession',
|
||||
fields=[
|
||||
('id', models.CharField(max_length=36, primary_key=True, serialize=False)),
|
||||
('platform', models.CharField(blank=True, max_length=30, verbose_name='پلتفرم')),
|
||||
('app_version', models.CharField(blank=True, max_length=30, verbose_name='نسخه\u200cی اپ')),
|
||||
('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='آی\u200cپی')),
|
||||
('started_at', models.DateTimeField(verbose_name='شروع')),
|
||||
('ended_at', models.DateTimeField(blank=True, null=True, verbose_name='پایان')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='app_sessions', to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'جلسه\u200cی استفاده از اپ',
|
||||
'verbose_name_plural': 'جلسه\u200cهای استفاده از اپ',
|
||||
'ordering': ['-started_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ClickEvent',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('screen_name', models.CharField(blank=True, max_length=150, verbose_name='نام صفحه')),
|
||||
('element', models.CharField(blank=True, max_length=150, verbose_name='برچسبِ عنصر (اختیاری)')),
|
||||
('x', models.FloatField(blank=True, null=True)),
|
||||
('y', models.FloatField(blank=True, null=True)),
|
||||
('created_at', models.DateTimeField(verbose_name='زمان')),
|
||||
('session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clicks', to='telemetry.appsession')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'رویداد کلیک',
|
||||
'verbose_name_plural': 'رویدادهای کلیک',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ClientErrorLog',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('screen_name', models.CharField(blank=True, max_length=150, verbose_name='نام صفحه')),
|
||||
('message', models.TextField(verbose_name='پیام خطا')),
|
||||
('stack_trace', models.TextField(blank=True, verbose_name='Stack trace')),
|
||||
('created_at', models.DateTimeField(verbose_name='زمان')),
|
||||
('session', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='errors', to='telemetry.appsession')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'خطای سمت کاربر',
|
||||
'verbose_name_plural': 'خطاهای سمت کاربر',
|
||||
'ordering': ['-created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PageView',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('screen_name', models.CharField(max_length=150, verbose_name='نام صفحه')),
|
||||
('entered_at', models.DateTimeField(verbose_name='زمان ورود')),
|
||||
('duration_seconds', models.FloatField(blank=True, null=True, verbose_name='مدت ماندن (ثانیه)')),
|
||||
('session', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='page_views', to='telemetry.appsession')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'بازدید صفحه',
|
||||
'verbose_name_plural': 'بازدیدهای صفحه',
|
||||
'ordering': ['entered_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ApiCallLog',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('method', models.CharField(max_length=10, verbose_name='متد')),
|
||||
('path', models.CharField(max_length=255, verbose_name='مسیر')),
|
||||
('status_code', models.PositiveSmallIntegerField(verbose_name='کد وضعیت')),
|
||||
('duration_ms', models.FloatField(verbose_name='زمان پاسخ (میلی\u200cثانیه)')),
|
||||
('ip_address', models.GenericIPAddressField(blank=True, null=True, verbose_name='آی\u200cپی')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='زمان')),
|
||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='api_calls', to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'لاگ فراخوانی API',
|
||||
'verbose_name_plural': 'لاگ\u200cهای فراخوانی API',
|
||||
'ordering': ['-created_at'],
|
||||
'indexes': [models.Index(fields=['user', 'created_at'], name='telemetry_a_user_id_7a7591_idx'), models.Index(fields=['path', 'created_at'], name='telemetry_a_path_267c85_idx')],
|
||||
},
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='appsession',
|
||||
index=models.Index(fields=['user', 'started_at'], name='telemetry_a_user_id_142b1f_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='clickevent',
|
||||
index=models.Index(fields=['screen_name'], name='telemetry_c_screen__d3940b_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='pageview',
|
||||
index=models.Index(fields=['screen_name'], name='telemetry_p_screen__242757_idx'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user