Spaces:
Sleeping
Sleeping
| """ | |
| DB Service Configuration Registration | |
| Add this to your main.py or app initialization: | |
| """ | |
| from services.db_service import DBServiceConfig | |
| from core.models import ( | |
| Base, # SQLAlchemy declarative base | |
| User, GeminiJob, PaymentTransaction, Contact, | |
| RateLimit, ApiKeyUsage, ClientUser, AuditLog | |
| ) | |
| def register_db_service_config(): | |
| """Register DB Service configuration at application startup.""" | |
| DBServiceConfig.register( | |
| # Database metadata (for table creation) | |
| db_base=Base, | |
| all_models=[ | |
| User, GeminiJob, PaymentTransaction, Contact, | |
| RateLimit, ApiKeyUsage, ClientUser, AuditLog | |
| ], | |
| # Column names | |
| user_filter_column="user_id", # Column name for user ownership | |
| user_id_column="id", # Column name for user ID | |
| soft_delete_column="deleted_at", # Column name for soft delete tracking | |
| # Special models | |
| special_user_model=User, # Model that uses 'id' instead of 'user_id' | |
| # ================================================================ | |
| # USER SCOPES (Regular authenticated users) | |
| # ================================================================ | |
| user_read_scoped=[ | |
| User, # Users can read own profile | |
| GeminiJob, # Users can read own jobs | |
| PaymentTransaction, # Users can read own payments | |
| Contact, # Users can read own contacts | |
| ], | |
| user_create_scoped=[ | |
| GeminiJob, # Users can create jobs | |
| PaymentTransaction, # Users can create payments (via API) | |
| Contact, # Users can submit contact forms | |
| ], | |
| user_update_scoped=[ | |
| User, # Users can update own profile | |
| GeminiJob, # Users can update own jobs | |
| ], | |
| user_delete_scoped=[ | |
| GeminiJob, # Users can delete own jobs | |
| Contact, # Users can delete own contacts | |
| ], | |
| # ================================================================ | |
| # ADMIN SCOPES (Administrators only - via ADMIN_EMAILS env var) | |
| # ================================================================ | |
| admin_read_only=[ | |
| RateLimit, # Only admins view rate limits | |
| ApiKeyUsage, # Only admins view API usage | |
| ClientUser, # Only admins view client mappings | |
| AuditLog, # Only admins view audit logs | |
| ], | |
| admin_create_only=[ | |
| RateLimit, # Only admins create rate limits | |
| ApiKeyUsage, # Only admins create API usage entries | |
| ClientUser, # Only admins create client mappings | |
| AuditLog, # Only admins create audit entries | |
| ], | |
| admin_update_only=[ | |
| RateLimit, # Only admins update rate limits | |
| ApiKeyUsage, # Only admins update API settings | |
| ClientUser, # Only admins modify client mappings | |
| PaymentTransaction,# Only admins refund/adjust payments | |
| ], | |
| admin_delete_only=[ | |
| RateLimit, # Only admins delete rate limits | |
| ApiKeyUsage, # Only admins remove API tracking | |
| User, # Only admins delete user accounts | |
| ], | |
| # ================================================================ | |
| # SYSTEM SCOPES (Background processes - OAuth, webhooks, workers) | |
| # ================================================================ | |
| system_read_scoped=[ | |
| User, GeminiJob, PaymentTransaction, RateLimit, | |
| ApiKeyUsage, ClientUser, AuditLog, | |
| ], | |
| system_create_scoped=[ | |
| User, # OAuth creates users | |
| ClientUser, # Middleware creates client mappings | |
| AuditLog, # System creates audit entries | |
| PaymentTransaction,# Webhooks create transactions | |
| ApiKeyUsage, # Middleware tracks API usage | |
| GeminiJob, # System creates jobs | |
| RateLimit, # Middleware creates rate limits | |
| ], | |
| system_update_scoped=[ | |
| User, # OAuth updates profiles | |
| GeminiJob, # Workers update job status | |
| PaymentTransaction,# Webhooks update verification | |
| ApiKeyUsage, # System updates API stats | |
| RateLimit, # System updates rate counters | |
| ClientUser, # System updates mappings | |
| ], | |
| system_delete_scoped=[ | |
| GeminiJob, # Cleanup deletes expired jobs | |
| RateLimit, # Cleanup deletes old limits | |
| ApiKeyUsage, # Cleanup deletes old usage | |
| ], | |
| ) | |