Compare commits
2 Commits
6b6db9474e
...
6f9e24a76e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f9e24a76e | ||
|
|
74524206a5 |
Binary file not shown.
BIN
database-backups/vigilanzaturni_v1.0.22_20251018_082656.sql.gz
Normal file
BIN
database-backups/vigilanzaturni_v1.0.22_20251018_082656.sql.gz
Normal file
Binary file not shown.
@ -56,7 +56,7 @@ import {
|
||||
type InsertCcnlSetting,
|
||||
} from "@shared/schema";
|
||||
import { db } from "./db";
|
||||
import { eq, and, gte, lte, desc } from "drizzle-orm";
|
||||
import { eq, and, gte, lte, desc, or } from "drizzle-orm";
|
||||
|
||||
export interface IStorage {
|
||||
// User operations (Replit Auth required)
|
||||
@ -163,23 +163,40 @@ export class DatabaseStorage implements IStorage {
|
||||
}
|
||||
|
||||
async upsertUser(userData: UpsertUser): Promise<User> {
|
||||
// Use onConflictDoUpdate to handle both insert and update cases
|
||||
// This handles conflicts on both id (primary key) and email (unique constraint)
|
||||
// Handle conflicts on both id (primary key) and email (unique constraint)
|
||||
// Check if user exists by id or email first
|
||||
const existingUser = await db
|
||||
.select()
|
||||
.from(users)
|
||||
.where(
|
||||
userData.id
|
||||
? or(eq(users.id, userData.id), eq(users.email, userData.email || ''))
|
||||
: eq(users.email, userData.email || '')
|
||||
)
|
||||
.limit(1);
|
||||
|
||||
if (existingUser.length > 0) {
|
||||
// Update existing user - NEVER change the ID (it's a primary key)
|
||||
const [updated] = await db
|
||||
.update(users)
|
||||
.set({
|
||||
...(userData.email && { email: userData.email }),
|
||||
...(userData.name && { name: userData.name }),
|
||||
...(userData.role && { role: userData.role }),
|
||||
updatedAt: new Date(),
|
||||
})
|
||||
.where(eq(users.id, existingUser[0].id))
|
||||
.returning();
|
||||
return updated;
|
||||
} else {
|
||||
// Insert new user
|
||||
const [user] = await db
|
||||
.insert(users)
|
||||
.values(userData)
|
||||
.onConflictDoUpdate({
|
||||
target: users.id,
|
||||
set: {
|
||||
email: userData.email,
|
||||
name: userData.name,
|
||||
role: userData.role,
|
||||
updatedAt: new Date(),
|
||||
},
|
||||
})
|
||||
.returning();
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
async getAllUsers(): Promise<User[]> {
|
||||
return await db.select().from(users).orderBy(desc(users.createdAt));
|
||||
|
||||
10
version.json
10
version.json
@ -1,7 +1,13 @@
|
||||
{
|
||||
"version": "1.0.21",
|
||||
"lastUpdate": "2025-10-18T08:18:27.659Z",
|
||||
"version": "1.0.22",
|
||||
"lastUpdate": "2025-10-18T08:27:14.297Z",
|
||||
"changelog": [
|
||||
{
|
||||
"version": "1.0.22",
|
||||
"date": "2025-10-18",
|
||||
"type": "patch",
|
||||
"description": "Deployment automatico v1.0.22"
|
||||
},
|
||||
{
|
||||
"version": "1.0.21",
|
||||
"date": "2025-10-18",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user