-- name: CreateUser :one INSERT INTO users (username, password_hash) VALUES ($1, $2) RETURNING *; -- name: GetUserByUsername :one SELECT * FROM users WHERE username = $1; -- name: ResetLoginFailures :exec UPDATE users SET failed_login_attempts = 0, locked_until = NULL WHERE username = $1; -- name: RecordFailedLogin :one UPDATE users SET failed_login_attempts = CASE WHEN failed_login_attempts + 1 >= 3 THEN 3 ELSE failed_login_attempts + 1 END, locked_until = CASE WHEN failed_login_attempts + 1 >= 3 THEN NOW() + INTERVAL '5 minutes' ELSE locked_until END WHERE username = $1 RETURNING failed_login_attempts, locked_until; -- name: GetDeliveriesByDate :many SELECT * FROM deliveries WHERE date = $1; -- name: CreateDelivery :one INSERT INTO deliveries ( date, pickup_location, pickup_location_2, warehouse_request_source, warehouse_request_source_2, product_name, product_name_2, customer_name, address, street, house, apartment, entrance, floor, phone, additional_phone, has_elevator, service_info, comment ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19) RETURNING *; -- name: GetDeliveryByID :one SELECT * FROM deliveries WHERE id = $1; -- name: DeleteDelivery :exec DELETE FROM deliveries WHERE id = $1; -- name: UpdateDelivery :exec UPDATE deliveries SET date = $1, pickup_location = $2, pickup_location_2 = $3, warehouse_request_source = $4, warehouse_request_source_2 = $5, product_name = $6, product_name_2 = $7, customer_name = $8, address = $9, street = $10, house = $11, apartment = $12, entrance = $13, floor = $14, phone = $15, additional_phone = $16, has_elevator = $17, service_info = $18, comment = $19, updated_at = NOW() WHERE id = $20; -- name: GetDeliveryCount :many SELECT COUNT(*) as count, date FROM deliveries WHERE date >= CURRENT_DATE AND date < CURRENT_DATE + INTERVAL '7 days' GROUP BY date; -- name: UpdateDeliveryStatus :exec UPDATE deliveries SET status = $1, updated_at = NOW() WHERE id = $2;