3.0 KiB
Scripts Directory
This directory contains utility scripts for database initialization, migrations, and other maintenance tasks.
Database Initialization
init_database.py
Initializes all database tables in Appwrite with the correct schema, columns, and indexes.
Usage:
# Ensure virtual environment is activated
source venv/bin/activate
# Run the initialization script
python scripts/init_database.py
Prerequisites:
- Appwrite instance running and accessible
.envfile configured with Appwrite credentials:APPWRITE_ENDPOINTAPPWRITE_PROJECT_IDAPPWRITE_API_KEYAPPWRITE_DATABASE_ID
What it does:
-
Validates environment configuration
-
Creates the following tables:
- characters: Player character data with userId indexing
-
Creates necessary columns and indexes for efficient querying
-
Skips tables/columns/indexes that already exist (idempotent)
Output:
============================================================
Code of Conquest - Database Initialization
============================================================
✓ Environment variables loaded
Endpoint: https://your-appwrite-instance.com/v1
Project: your-project-id
Database: main
Initializing database tables...
============================================================
Initialization Results
============================================================
✓ characters: SUCCESS
Total: 1 succeeded, 0 failed
✓ All tables initialized successfully!
You can now start the application.
Adding New Tables
To add a new table to the initialization process:
- Open
app/services/database_init.py - Create a new method following the pattern of
init_characters_table() - Add the table initialization to
init_all_tables()method - Run the initialization script
Example:
def init_sessions_table(self) -> bool:
"""Initialize the sessions table."""
table_id = 'sessions'
# Create table
table = self.tables_db.create_table(
database_id=self.database_id,
table_id=table_id,
name='Sessions'
)
# Create columns
self._create_column(
table_id=table_id,
column_id='userId',
column_type='string',
size=255,
required=True
)
# Create indexes
self._create_index(
table_id=table_id,
index_id='idx_userId',
index_type='key',
attributes=['userId']
)
return True
Troubleshooting
Missing Environment Variables
If you see errors about missing environment variables, ensure your .env file contains all required Appwrite configuration.
Connection Errors
If the script cannot connect to Appwrite:
- Verify the
APPWRITE_ENDPOINTis correct and accessible - Check that the API key has sufficient permissions
- Ensure the database exists in your Appwrite project
Column/Index Already Exists
The script is idempotent and will log warnings for existing columns/indexes without failing. This is normal if you run the script multiple times.