-- :name create-project :<! :1 insert into projects (id, "user", name) values (:id, :user, :name) returning *; -- :name update-project :<! :1 update projects set name = :name, version = :version where id = :id and "user" = :user and deleted_at is null returning *; -- :name delete-project :! :n update projects set deleted_at = clock_timestamp() where id = :id and "user" = :user and deleted_at is null; -- :name get-project-by-id :? :1 select p.* from projects as p where p.id = :id and p.deleted_at is null; -- :name get-projects :? :* select pr.*, ps.token as share_token from projects as pr inner join project_shares as ps on (ps.project = pr.id) where pr.deleted_at is null and pr."user" = :user order by pr.created_at asc; -- :name get-project-by-share-token :? :* select p.* from projects as p inner join project_shares as ps on (p.id = ps.project) where ps.token = :token; -- :name get-share-tokens-for-project select s.* from project_shares as s where s.project = :project order by s.created_at desc;