-- name: InsertURL :execlastid
INSERT INTO url (path) VALUES (?);

-- name: InsertFile :execlastid
INSERT INTO file (
    url_id, content_type, last_modified, etag, title, headers
)
VALUES (
    @url_id,
    @content_type,
    @last_modified,
    @etag,
    @title,
    @headers
);

-- name: InsertContent :exec
INSERT INTO content (file_id, encoding, body)
VALUES (@fileid, @encoding, @body);

-- name: GetFile :many
SELECT
    sqlc.embed(file),
    sqlc.embed(content)
FROM url
INNER JOIN file
    USING (url_id)
INNER JOIN content
    USING (file_id)
WHERE
    url.path = ?;

-- name: CheckPath :one
SELECT
    EXISTS(
        SELECT 1
        FROM url
        WHERE path = ?
    ) AS differs;
