feat: Add new scripts and update project structure for database management and user authentication

This commit introduces several new scripts for managing database operations, including user creation, permission grants, and data migrations. It also adds new documentation files to guide users through the setup and configuration processes. Additionally, the project structure is updated to enhance organization and maintainability, ensuring a smoother development experience for contributors. These changes support the ongoing transition to a web-based architecture and improve overall project functionality.
This commit is contained in:
Tanya
2026-01-06 13:53:24 -05:00
parent 713584dc04
commit de2144be2a
175 changed files with 35854 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
import { PrismaClient as PrismaClientAuth } from '../node_modules/.prisma/client-auth';
import * as dotenv from 'dotenv';
// Load environment variables
dotenv.config({ path: '.env' });
const prisma = new PrismaClientAuth({
datasourceUrl: process.env.DATABASE_URL_AUTH,
});
async function runMigration() {
try {
console.log('Running migration to add has_write_access column...\n');
// Check if column already exists
try {
await prisma.$queryRaw`SELECT has_write_access FROM users LIMIT 1`;
console.log('✅ Column has_write_access already exists');
return;
} catch (error: any) {
if (error.message?.includes('has_write_access') || error.code === '42703') {
console.log('Column does not exist, adding it...');
} else {
throw error;
}
}
// Add the column
console.log('Adding has_write_access column...');
await prisma.$executeRawUnsafe(`
ALTER TABLE users
ADD COLUMN IF NOT EXISTS has_write_access BOOLEAN NOT NULL DEFAULT false;
`);
console.log('✅ Column added');
// Create index
console.log('Creating index...');
await prisma.$executeRawUnsafe(`
CREATE INDEX IF NOT EXISTS idx_users_has_write_access ON users(has_write_access);
`);
console.log('✅ Index created');
// Update existing users to have write access = false (except we'll update admin separately)
console.log('Updating existing users...');
await prisma.$executeRawUnsafe(`
UPDATE users
SET has_write_access = false
WHERE has_write_access IS NULL;
`);
console.log('✅ Existing users updated');
// Verify
const result = await prisma.$queryRaw<Array<{column_name: string, data_type: string, column_default: string}>>`
SELECT column_name, data_type, column_default
FROM information_schema.columns
WHERE table_name = 'users' AND column_name = 'has_write_access';
`;
if (result.length > 0) {
console.log('\n✅ Migration completed successfully!');
console.log('Column details:', result[0]);
} else {
console.log('\n⚠️ Column was added but verification query returned no results');
}
} catch (error: any) {
console.error('\n❌ Error running migration:', error.message);
if (error.message.includes('permission denied')) {
console.error('\n⚠️ Permission denied. You may need to run this as a database superuser.');
console.error('Try running the SQL manually:');
console.error(' ALTER TABLE users ADD COLUMN IF NOT EXISTS has_write_access BOOLEAN NOT NULL DEFAULT false;');
}
throw error;
} finally {
await prisma.$disconnect();
}
}
runMigration();