teoat commited on
Commit
ced9a55
·
verified ·
1 Parent(s): 1b439dc

Upload core/database.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. core/database.py +21 -15
core/database.py CHANGED
@@ -16,39 +16,34 @@ from sqlalchemy.engine import Engine
16
  from sqlalchemy.pool import QueuePool
17
 
18
  from core.logging import logger
19
- from core.models import (
20
  AccessReview,
21
  AuditLog,
22
- # Database utilities
23
  Base,
24
  Case,
25
  CaseActivity,
26
- # Other models needed by routers
27
  CaseNote,
28
  CaseStatus,
29
  CaseType,
30
  ComplianceAuditLog,
31
- RegulatoryReport,
32
- SecurityIncident,
33
- # Entity models
34
  Entity,
35
  Evidence,
36
- # Compliance models
37
  FraudAlert,
38
  GraphSnapshot,
39
  IdentityNode,
40
  Project,
41
  ReconciliationType,
 
42
  Relationship,
43
  RookieChecklist,
 
44
  SessionLocal,
45
  Team,
 
46
  Transaction,
47
- # User models
48
  User,
49
- TrainingRecord,
50
- UserOnboardingState,
51
  UserDevice,
 
52
  UserRole,
53
  create_engine_and_session,
54
  create_tables,
@@ -123,17 +118,25 @@ class DatabaseOptimizer:
123
 
124
  @event.listens_for(self.engine, "after_execute")
125
  def after_execute(conn, clauseelement, multiparams, params, result):
126
- execution_time = time.time() - conn.info.get("query_start_time", time.time())
 
 
127
  query_stats["query_count"] += 1
128
  query_stats["total_execution_time"] += execution_time
129
- query_stats["avg_query_time"] = query_stats["total_execution_time"] / query_stats["query_count"]
 
 
130
 
131
  # Log slow queries (>100ms)
132
  if execution_time > 0.1:
133
  query_str = str(clauseelement)
134
  query_stats["slow_queries"].append(
135
  {
136
- "query": (query_str[:200] + "..." if len(query_str) > 200 else query_str),
 
 
 
 
137
  "execution_time": execution_time,
138
  "timestamp": time.time(),
139
  }
@@ -221,7 +224,9 @@ def optimize_database_performance():
221
  try:
222
  conn.execute(text("ANALYZE;")) # Update table statistics
223
  conn.commit()
224
- optimization_results["performance_improvements"]["statistics_updated"] = True
 
 
225
  except Exception as e:
226
  logger.warning(f"Failed to update statistics: {e}")
227
 
@@ -345,7 +350,8 @@ def after_execute(conn, clauseelement, multiparams, params, result):
345
  # Log slow queries
346
  if duration > 2.0:
347
  logger.warning(
348
- f"Slow database query: {duration:.3f}s", extra={"query_duration": duration, "query_type": "database"}
 
349
  )
350
  elif duration > 1.0:
351
  logger.info(f"Database query completed in {duration:.3f}s")
 
16
  from sqlalchemy.pool import QueuePool
17
 
18
  from core.logging import logger
19
+ from core.models import ( # Database utilities; Other models needed by routers; Entity models; Compliance models; User models
20
  AccessReview,
21
  AuditLog,
 
22
  Base,
23
  Case,
24
  CaseActivity,
 
25
  CaseNote,
26
  CaseStatus,
27
  CaseType,
28
  ComplianceAuditLog,
 
 
 
29
  Entity,
30
  Evidence,
 
31
  FraudAlert,
32
  GraphSnapshot,
33
  IdentityNode,
34
  Project,
35
  ReconciliationType,
36
+ RegulatoryReport,
37
  Relationship,
38
  RookieChecklist,
39
+ SecurityIncident,
40
  SessionLocal,
41
  Team,
42
+ TrainingRecord,
43
  Transaction,
 
44
  User,
 
 
45
  UserDevice,
46
+ UserOnboardingState,
47
  UserRole,
48
  create_engine_and_session,
49
  create_tables,
 
118
 
119
  @event.listens_for(self.engine, "after_execute")
120
  def after_execute(conn, clauseelement, multiparams, params, result):
121
+ execution_time = time.time() - conn.info.get(
122
+ "query_start_time", time.time()
123
+ )
124
  query_stats["query_count"] += 1
125
  query_stats["total_execution_time"] += execution_time
126
+ query_stats["avg_query_time"] = (
127
+ query_stats["total_execution_time"] / query_stats["query_count"]
128
+ )
129
 
130
  # Log slow queries (>100ms)
131
  if execution_time > 0.1:
132
  query_str = str(clauseelement)
133
  query_stats["slow_queries"].append(
134
  {
135
+ "query": (
136
+ query_str[:200] + "..."
137
+ if len(query_str) > 200
138
+ else query_str
139
+ ),
140
  "execution_time": execution_time,
141
  "timestamp": time.time(),
142
  }
 
224
  try:
225
  conn.execute(text("ANALYZE;")) # Update table statistics
226
  conn.commit()
227
+ optimization_results["performance_improvements"]["statistics_updated"] = (
228
+ True
229
+ )
230
  except Exception as e:
231
  logger.warning(f"Failed to update statistics: {e}")
232
 
 
350
  # Log slow queries
351
  if duration > 2.0:
352
  logger.warning(
353
+ f"Slow database query: {duration:.3f}s",
354
+ extra={"query_duration": duration, "query_type": "database"},
355
  )
356
  elif duration > 1.0:
357
  logger.info(f"Database query completed in {duration:.3f}s")