Small logical mistake on schema applying.
This commit is contained in:
parent
822ea3a453
commit
649ec0c89e
@ -187,7 +187,7 @@ class SlidingSQLite:
|
|||||||
def _get_connection(self, db_file: str) -> sqlite3.Connection:
|
def _get_connection(self, db_file: str) -> sqlite3.Connection:
|
||||||
"""
|
"""
|
||||||
Get a connection to the specified database file.
|
Get a connection to the specified database file.
|
||||||
Reuses existing connections when possible.
|
Reuses existing connections when possible and applies schema only if needed.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
db_file: Path to the database file
|
db_file: Path to the database file
|
||||||
@ -214,8 +214,30 @@ class SlidingSQLite:
|
|||||||
)
|
)
|
||||||
conn.execute("PRAGMA journal_mode=WAL;")
|
conn.execute("PRAGMA journal_mode=WAL;")
|
||||||
conn.execute("PRAGMA busy_timeout=5000;")
|
conn.execute("PRAGMA busy_timeout=5000;")
|
||||||
if db_file != self._get_metadata_db():
|
|
||||||
|
# Only apply schema if the database is new
|
||||||
|
if db_file != self._get_metadata_db() and os.path.exists(db_file):
|
||||||
|
# Check if schema is already applied by testing for a known table
|
||||||
|
try:
|
||||||
|
conn.execute("SELECT 1 FROM node_auth LIMIT 1")
|
||||||
|
except sqlite3.Error:
|
||||||
|
# Schema not applied yet, apply it
|
||||||
|
try:
|
||||||
conn.executescript(self.schema)
|
conn.executescript(self.schema)
|
||||||
|
conn.commit()
|
||||||
|
except sqlite3.Error as e:
|
||||||
|
logging.error(f"Failed to apply schema to {db_file}: {e}")
|
||||||
|
conn.close()
|
||||||
|
raise DatabaseError(f"Failed to apply schema to {db_file}: {e}")
|
||||||
|
elif db_file != self._get_metadata_db():
|
||||||
|
# New file, apply schema
|
||||||
|
try:
|
||||||
|
conn.executescript(self.schema)
|
||||||
|
conn.commit()
|
||||||
|
except sqlite3.Error as e:
|
||||||
|
logging.error(f"Failed to apply schema to new {db_file}: {e}")
|
||||||
|
conn.close()
|
||||||
|
raise DatabaseError(f"Failed to apply schema to {db_file}: {e}")
|
||||||
|
|
||||||
self.connections[db_file] = conn
|
self.connections[db_file] = conn
|
||||||
except sqlite3.Error as e:
|
except sqlite3.Error as e:
|
||||||
@ -262,15 +284,15 @@ class SlidingSQLite:
|
|||||||
"SELECT id FROM metadata WHERE db_file = ?", (current_db,)
|
"SELECT id FROM metadata WHERE db_file = ?", (current_db,)
|
||||||
)
|
)
|
||||||
existing = cursor.fetchone()
|
existing = cursor.fetchone()
|
||||||
if existing:
|
if not existing:
|
||||||
logging.debug(f"Database {current_db} already registered")
|
|
||||||
else:
|
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"INSERT OR IGNORE INTO metadata (db_file, start_time, end_time) VALUES (?, ?, ?)",
|
"INSERT OR IGNORE INTO metadata (db_file, start_time, end_time) VALUES (?, ?, ?)",
|
||||||
(current_db, interval_start, interval_end),
|
(current_db, interval_start, interval_end),
|
||||||
)
|
)
|
||||||
conn.commit()
|
conn.commit()
|
||||||
logging.debug(f"Registered new database: {current_db}")
|
logging.debug(f"Registered new database: {current_db}")
|
||||||
|
else:
|
||||||
|
logging.debug(f"Database {current_db} already registered")
|
||||||
except sqlite3.Error as e:
|
except sqlite3.Error as e:
|
||||||
logging.error(f"Failed to register current database: {e}")
|
logging.error(f"Failed to register current database: {e}")
|
||||||
# Continue execution as this is not critical
|
# Continue execution as this is not critical
|
||||||
|
Loading…
x
Reference in New Issue
Block a user