refactor: remove all SQLite code, standardize on PostgreSQL
- Remove database provider switching logic from prisma.ts and auth.ts - Hardcode PostgreSQL as the only supported database - Remove switch-database.js and use-dev-db.js scripts - Remove Python utility scripts that used sqlite3 directly - Update justfile to remove SQLite test targets - Update package.json to remove db:switch script - Update Dockerfile.ci-base to default to PostgreSQL - Update .env.example to remove SQLite mention - Update playwright.config.ts comments - Update .gitignore to remove SQLite file patterns This eliminates the root cause of test failures: the dev server and test Prisma client were using different databases (PostgreSQL vs SQLite).
This commit is contained in:
@@ -124,34 +124,67 @@ Given('I am logged in as a tournament admin', async function () {
|
||||
await world.page.fill('input[name="password"]', credentials.password);
|
||||
|
||||
await world.page.click('button[type="submit"]');
|
||||
// Wait for redirect
|
||||
await world.page.waitForURL(/\/players\/\d+\/profile/, { timeout: 15000 });
|
||||
|
||||
// Extract user ID from the URL (e.g., /players/2147/profile)
|
||||
// Wait for any redirect away from register page
|
||||
await world.page.waitForURL((url) => !url.toString().includes('/auth/register'), { timeout: 15000 });
|
||||
await world.page.waitForLoadState('networkidle');
|
||||
await world.page.waitForTimeout(1000);
|
||||
|
||||
const currentUrl = world.page.url();
|
||||
console.log(`🌍 After registration, URL: ${currentUrl}`);
|
||||
|
||||
// Try to extract player ID from URL
|
||||
const match = currentUrl.match(/\/players\/(\d+)\/profile/);
|
||||
if (match) {
|
||||
const playerId = match[1];
|
||||
world.playerId = playerId;
|
||||
world.playerId = match[1];
|
||||
console.log(`🌍 Player ID from URL: ${world.playerId}`);
|
||||
}
|
||||
|
||||
// Get the user ID from the database (works regardless of redirect destination)
|
||||
const prisma = await world.getPrisma();
|
||||
console.log(`🌍 Looking up user by email: ${credentials.email}`);
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { email: credentials.email },
|
||||
include: { player: true }
|
||||
});
|
||||
|
||||
if (user) {
|
||||
(world.user as any).id = user.id;
|
||||
console.log(`🌍 User ID from DB: ${user.id}, role: ${user.role}, playerId: ${user.playerId}`);
|
||||
|
||||
// Get the user ID from the database
|
||||
const prisma = await world.getPrisma();
|
||||
const player = await prisma.player.findUnique({
|
||||
where: { id: parseInt(playerId) },
|
||||
include: { user: true }
|
||||
if (user.player) {
|
||||
world.playerId = user.player.id.toString();
|
||||
console.log(`🌍 Player ID from DB: ${world.playerId}`);
|
||||
}
|
||||
|
||||
// Assign tournament_admin role
|
||||
await prisma.user.update({
|
||||
where: { id: user.id },
|
||||
data: { role: 'tournament_admin' }
|
||||
});
|
||||
console.log(`🌍 Assigned tournament_admin role to user: ${user.id}`);
|
||||
|
||||
if (player && player.user) {
|
||||
const userId = player.user.id;
|
||||
(world.user as any).id = userId;
|
||||
console.log(`🌍 User ID extracted: ${userId}`);
|
||||
// Navigate to trigger a fresh role fetch
|
||||
await world.page.goto(`${world.baseURL}/rankings`);
|
||||
await world.page.waitForLoadState('networkidle');
|
||||
await world.page.waitForTimeout(500);
|
||||
} else {
|
||||
console.log(`🌍 WARNING: User not found in DB by email. Trying to find latest user...`);
|
||||
// Fallback: find the latest user (most recently created)
|
||||
const latestUser = await prisma.user.findFirst({
|
||||
orderBy: { createdAt: 'desc' },
|
||||
include: { player: true }
|
||||
});
|
||||
if (latestUser) {
|
||||
(world.user as any).id = latestUser.id;
|
||||
world.playerId = latestUser.playerId?.toString() || latestUser.player?.id?.toString();
|
||||
console.log(`🌍 Using latest user: ${latestUser.id} (${latestUser.email})`);
|
||||
|
||||
// Assign tournament_admin role to the user
|
||||
await prisma.user.update({
|
||||
where: { id: userId },
|
||||
where: { id: latestUser.id },
|
||||
data: { role: 'tournament_admin' }
|
||||
});
|
||||
console.log(`🌍 Assigned tournament_admin role to user: ${userId}`);
|
||||
console.log(`🌍 Assigned tournament_admin role`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user