feat: sqlc, nix formatting

This commit is contained in:
2025-04-16 00:58:44 -04:00
parent 32f85fd0be
commit 967e2650ad
74 changed files with 1962 additions and 6811 deletions

2
server/db/.sqlfluff Normal file
View File

@ -0,0 +1,2 @@
[sqlfluff]
dialect = sqlite

View File

@ -0,0 +1 @@
/schema.sql

View File

@ -1,23 +1,23 @@
-- migrate:up
CREATE TABLE user(
CREATE TABLE user (
id INTEGER PRIMARY KEY NOT NULL,
username TEXT NOT NULL,
password TEXT NOT NULL,
profile_picture_id INTEGER,
FOREIGN KEY(profile_picture_id) REFERENCES file(id)
FOREIGN KEY (profile_picture_id) REFERENCES file (id)
);
CREATE TABLE file(
CREATE TABLE file (
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
data BLOB NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY(user_id) REFERENCES user(id)
FOREIGN KEY (user_id) REFERENCES user (id)
);
CREATE TABLE item(
CREATE TABLE item (
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
added DATETIME NOT NULL,
@ -26,10 +26,10 @@ CREATE TABLE item(
quantity INTEGER NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY(user_id) REFERENCES user(id)
FOREIGN KEY (user_id) REFERENCES user (id)
);
-- migrate:down
drop table user;
drop table file;
drop table item;
DROP TABLE user;
DROP TABLE file;
DROP TABLE item;

View File

@ -0,0 +1,41 @@
-- name: GetFile :one
SELECT
id,
name,
data,
user_id
FROM file
WHERE
id = @id
AND
user_id = @user_id
LIMIT 1;
-- name: InsertFile :one
INSERT INTO file (
name,
data,
user_id
) VALUES (
@name,
@data,
@user_id
)
RETURNING id;
-- name: UpdateFile :exec
UPDATE file
SET
name = COALESCE(sqlc.narg('name'), name),
data = COALESCE(sqlc.narg('data'), data)
WHERE
id = @id
AND
user_id = @user_id;
-- name: DeleteFile :exec
DELETE FROM file
WHERE
id = @id
AND
user_id = @user_id;

View File

@ -0,0 +1,92 @@
-- name: GetItem :one
SELECT
id,
name,
added,
description,
price,
quantity,
user_id
FROM item
WHERE
id = @id
AND
user_id = @user_id
LIMIT 1;
-- name: GetItems :many
SELECT
id,
name,
added,
description,
price,
quantity,
user_id
FROM item
WHERE
user_id = @user_id
AND
(
(name LIKE sqlc.narg('name') OR sqlc.narg('name') IS NULL)
AND
(added >= sqlc.narg('start') OR sqlc.narg('start') IS NULL)
AND
(added <= sqlc.narg('end') OR sqlc.narg('end') IS NULL)
)
LIMIT
@limit
OFFSET
@offset;
-- name: GetItemsCount :one
SELECT COUNT(id)
FROM item
WHERE
user_id = @user_id
AND
(
(name LIKE sqlc.narg('name') OR sqlc.narg('name') IS NULL)
AND
(added >= sqlc.narg('start') OR sqlc.narg('start') IS NULL)
AND
(added <= sqlc.narg('end') OR sqlc.narg('end') IS NULL)
)
LIMIT 1;
-- name: InsertItem :one
INSERT INTO item (
name,
added,
description,
price,
quantity,
user_id
) VALUES (
@name,
@added,
@description,
@price,
@quantity,
@user_id
)
RETURNING id;
-- name: UpdateItem :exec
UPDATE item
SET
name = COALESCE(sqlc.narg('name'), name),
description = COALESCE(sqlc.narg('description'), description),
price = COALESCE(sqlc.narg('price'), price),
quantity = COALESCE(sqlc.narg('quantity'), quantity)
WHERE
id = @id
AND
user_id = @user_id;
-- name: DeleteItem :exec
DELETE FROM item
WHERE
id = @id
AND
user_id = @user_id;

View File

@ -0,0 +1,46 @@
-- name: GetUser :one
SELECT
id,
username,
password,
profile_picture_id
FROM user
WHERE
id = @id
LIMIT 1;
-- name: GetUserbyUsername :one
SELECT
id,
username,
password,
profile_picture_id
FROM user
WHERE
username = @username
LIMIT 1;
-- name: InsertUser :one
INSERT INTO user (
username,
password
) VALUES (
@username,
@password
)
RETURNING id;
-- name: UpdateUser :exec
UPDATE user
SET
username = COALESCE(sqlc.narg('username'), username),
password = COALESCE(sqlc.narg('password'), password),
profile_picture_id = COALESCE(
sqlc.narg('profile_picture_id'),
profile_picture_id
)
WHERE id = @id;
-- name: DeleteUser :exec
DELETE FROM user
WHERE id = @id;

View File

@ -1,21 +1,21 @@
CREATE TABLE IF NOT EXISTS "schema_migrations" (version varchar(128) primary key);
CREATE TABLE user(
CREATE TABLE user (
id INTEGER PRIMARY KEY NOT NULL,
username TEXT NOT NULL,
password TEXT NOT NULL,
profile_picture_id INTEGER,
FOREIGN KEY(profile_picture_id) REFERENCES file(id)
FOREIGN KEY (profile_picture_id) REFERENCES file (id)
);
CREATE TABLE file(
CREATE TABLE file (
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
data BLOB NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY(user_id) REFERENCES user(id)
FOREIGN KEY (user_id) REFERENCES user (id)
);
CREATE TABLE item(
CREATE TABLE item (
id INTEGER PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
added DATETIME NOT NULL,
@ -24,7 +24,7 @@ CREATE TABLE item(
quantity INTEGER NOT NULL,
user_id INTEGER NOT NULL,
FOREIGN KEY(user_id) REFERENCES user(id)
FOREIGN KEY (user_id) REFERENCES user (id)
);
-- Dbmate schema migrations
INSERT INTO "schema_migrations" (version) VALUES