mirror of
https://github.com/Dispatcharr/Dispatcharr.git
synced 2026-07-28 12:36:42 +00:00
- Streamlined `generate_epg()` to incrementally stream EPG data without loading the entire guide, improving memory efficiency. - Reduced database load by deferring the fetching of large `programme_index` blobs, enhancing response times for EPG generation. - Introduced a composite index on `(epg_id, id)` in `ProgramData` to optimize query performance during EPG exports. - Updated tests to ensure proper functionality and performance of new features.
40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
from django.contrib.postgres.operations import AddIndexConcurrently
|
|
from django.db import migrations, models
|
|
|
|
|
|
class AddIndexConcurrentlyIfPostgres(AddIndexConcurrently):
|
|
"""Create the index CONCURRENTLY on PostgreSQL (no table lock on large
|
|
tables), falling back to a normal blocking AddIndex on other backends
|
|
such as the sqlite dev/test fallback."""
|
|
|
|
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
|
if schema_editor.connection.vendor == 'postgresql':
|
|
super().database_forwards(app_label, schema_editor, from_state, to_state)
|
|
else:
|
|
migrations.AddIndex.database_forwards(
|
|
self, app_label, schema_editor, from_state, to_state
|
|
)
|
|
|
|
def database_backwards(self, app_label, schema_editor, from_state, to_state):
|
|
if schema_editor.connection.vendor == 'postgresql':
|
|
super().database_backwards(app_label, schema_editor, from_state, to_state)
|
|
else:
|
|
migrations.AddIndex.database_backwards(
|
|
self, app_label, schema_editor, from_state, to_state
|
|
)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
# CREATE INDEX CONCURRENTLY cannot run inside a transaction.
|
|
atomic = False
|
|
|
|
dependencies = [
|
|
('epg', '0024_remove_epgsource_api_key_epgsource_password_and_more'),
|
|
]
|
|
|
|
operations = [
|
|
AddIndexConcurrentlyIfPostgres(
|
|
model_name='programdata',
|
|
index=models.Index(fields=['epg', 'id'], name='epg_prog_epg_id_idx'),
|
|
),
|
|
]
|