# Generated by Django 5.1.7 on 2026-05-26 03:33 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='Book', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(db_index=True, max_length=512)), ('author', models.CharField(blank=True, db_index=True, default='', max_length=256)), ('genre', models.CharField(blank=True, db_index=True, default='', max_length=128)), ('description', models.TextField(blank=True, default='')), ('reading_status', models.CharField(choices=[('want_to_read', 'Want to Read'), ('reading', 'Reading'), ('finished', 'Finished'), ('dnf', 'Did Not Finish')], db_index=True, default='want_to_read', max_length=20)), ('total_pages', models.PositiveIntegerField(default=0)), ('cover_image', models.URLField(blank=True, default='')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={ 'verbose_name': 'Book', 'verbose_name_plural': 'Books', 'db_table': 'books_book', 'ordering': ['title'], 'indexes': [models.Index(fields=['title', 'author', 'genre'], name='books_book_title_9fddc2_idx')], }, ), migrations.CreateModel( name='EBook', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=512)), ('author', models.CharField(blank=True, default='', max_length=256)), ('file', models.FileField(upload_to='ebooks/%Y/%m/%d/')), ('cover_image', models.ImageField(blank=True, null=True, upload_to='ebook_covers/%Y/%m/%d/')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ebooks', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'E-Book', 'verbose_name_plural': 'E-Books', 'db_table': 'books_ebook', 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='ReadingProgress', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('current_position', models.FloatField(default=0.0)), ('last_page', models.IntegerField(default=0)), ('updated_at', models.DateTimeField(auto_now=True)), ('ebook', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='reading_progress', to='books.ebook')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reading_progress', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name_plural': 'reading progress', 'db_table': 'books_reading_progress', }, ), migrations.CreateModel( name='ReadingSettings', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('font_size', models.IntegerField(default=18)), ('font_style', models.CharField(choices=[('sans-serif', 'Sans Serif'), ('serif', 'Serif'), ('monospace', 'Monospace')], default='sans-serif', max_length=20)), ('background_color', models.CharField(choices=[('#ffffff', 'White'), ('#f4e4c1', 'Sepia'), ('#1a1a2e', 'Dark'), ('#c7edcc', 'Green')], default='#ffffff', max_length=7)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='reading_settings', to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name_plural': 'reading settings', 'db_table': 'books_reading_settings', }, ), migrations.AddIndex( model_name='ebook', index=models.Index(fields=['user', '-created_at'], name='books_ebook_user_id_0b6bdb_idx'), ), migrations.AlterUniqueTogether( name='readingprogress', unique_together={('user', 'ebook')}, ), ]