-- name: CreateCompany :one
INSERT INTO companies (
        name,
        slug,
        admin_id,
        wallet_id,
        deducted_percentage
    )
VALUES ($1, $2, $3, $4, $5)
RETURNING *;
-- name: GetAllCompanies :many
SELECT *
FROM companies_details
WHERE (
        name ILIKE '%' || sqlc.narg('query') || '%'
        OR admin_first_name ILIKE '%' || sqlc.narg('query') || '%'
        OR admin_last_name ILIKE '%' || sqlc.narg('query') || '%'
        OR admin_phone_number ILIKE '%' || sqlc.narg('query') || '%'
        OR sqlc.narg('query') IS NULL
    )
    AND (
        created_at > sqlc.narg('created_before')
        OR sqlc.narg('created_before') IS NULL
    )
    AND (
        created_at < sqlc.narg('created_after')
        OR sqlc.narg('created_after') IS NULL
    );
-- name: GetCompanyByID :one
SELECT *
FROM companies_details
WHERE id = $1;
-- name: GetCompanyUsingSlug :one
SELECT *
FROM companies
WHERE slug = $1;
-- name: SearchCompanyByName :many
SELECT *
FROM companies_details
WHERE name ILIKE '%' || $1 || '%';
-- name: UpdateCompany :one
UPDATE companies
SET name = COALESCE(sqlc.narg(name), name),
    admin_id = COALESCE(sqlc.narg(admin_id), admin_id),
    is_active = COALESCE(sqlc.narg(is_active), is_active),
    deducted_percentage = COALESCE(
        sqlc.narg(deducted_percentage),
        deducted_percentage
    ),
    updated_at = CURRENT_TIMESTAMP
WHERE id = $1
RETURNING *;
-- name: DeleteCompany :exec
DELETE FROM companies
WHERE id = $1;