30 lines
702 B
Python
30 lines
702 B
Python
import os
|
|
import sqlite3
|
|
import tempfile
|
|
import zipfile
|
|
from json import loads as json_loads
|
|
|
|
from .loader import Loader
|
|
|
|
DB_FILE = "instance_log.sqlite"
|
|
|
|
|
|
class SQLiteLoader(Loader):
|
|
conn = None
|
|
|
|
def load(self, file: str):
|
|
self.conn = sqlite3.connect(file)
|
|
|
|
def get_entry(self) -> dict:
|
|
cursor = self.conn.cursor()
|
|
cursor.execute("SELECT * FROM log_entry")
|
|
for seq, timestamp, json in cursor.fetchall():
|
|
yield json_loads(json)
|
|
|
|
|
|
class ZipSQLiteLoader(SQLiteLoader):
|
|
def load(self, file: str):
|
|
with zipfile.ZipFile(file, "r") as zipped_log, tempfile.TemporaryDirectory() as tmp:
|
|
zipped_log.extract(DB_FILE, path=tmp)
|
|
super(ZipSQLiteLoader, self).load(os.path.join(tmp, DB_FILE))
|