Created
June 11, 2018 12:05
-
-
Save dedsm/c724178d43cdcce3efea77aa7bbbffab to your computer and use it in GitHub Desktop.
Timescale drop_chunks django support
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db.models.sql.compiler import SQLCompiler | |
from django.db.models.sql.constants import NO_RESULTS | |
class DropChunkCompiler(SQLCompiler): | |
def as_sql(self): | |
result = 'SELECT drop_chunks(interval %s, %s)' | |
return result, [self.query.interval, self.query.db_table] | |
def execute_sql(self, result_type=NO_RESULTS, *args, **kwargs): | |
return super().execute_sql(result_type=result_type, *args, **kwargs) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import django | |
from .compiler import DropChunkCompiler | |
from .query import DropChunkQuery | |
class TimescaleManagerMixin(object): | |
def drop_chunk(self, interval): | |
query = DropChunkQuery(self.model) | |
query.set_values(self.model._meta.db_table, interval) | |
connection = django.db.connections[self.db] | |
compiler = DropChunkCompiler(query, connection, self.db) | |
stuff = compiler.execute_sql() | |
return stuff |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db.models import sql | |
class DropChunkQuery(sql.Query): | |
def __init__(self, *args, **kwargs): | |
super().__init__(*args, **kwargs) | |
self.db_table = None | |
self.interval = None | |
def set_values(self, db_table, interval): | |
self.db_table = db_table | |
self.interval = interval |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment