-- name: CreateUser :one insert into users (username, password) values (@username, @password) returning *; -- name: GetUser :one select * from users where username = @username; -- name: GetUsers :many select * from users order by id; -- name: UpdateUser :one update users set username = @username, password = @password, is_admin = @is_admin where id = @id returning *; -- name: DeleteUser :exec delete from users where id = @id; -- name: GetUserByToken :one select u.* from users u join tokens t on u.id = t.user_id where t.token = @token; -- name: CreateToken :one insert into tokens (user_id, token) values (@user_id, @token) returning *; -- name: DeleteToken :exec delete from tokens where id = @id; -- name: CreateFile :one insert into files (id, user_id, filename, content_type, hash, size, created_at, expires) values (@id, @user_id, @filename, @content_type, @hash, @size, unixepoch(), @expires) returning *; -- name: GetFileByID :one select * from files where id = @id; -- name: GetFileByName :one select * from files where filename = @filename and hash = @hash; -- name: GetExpiredFiles :many select * from files where expires < unixepoch(); -- name: DeleteFile :exec delete from files where id = @id;