mirror of
https://github.com/cf-sonr/motr.git
synced 2026-01-12 02:59:13 +00:00
* feat: enhance modularity by relocating core packages * refactor: move chart components to dashboard package * refactor: restructure database access layer * refactor: rename credential descriptor to credentials for clarity * feat: enhance development environment configuration for database interactions * feat: integrate go-task for database migrations * feat: introduce middleware for market data and WebAuthn
339 lines
7.0 KiB
SQL
339 lines
7.0 KiB
SQL
-- name: InsertService :one
|
|
INSERT INTO services (
|
|
name,
|
|
description,
|
|
chain_id,
|
|
address,
|
|
owner_address,
|
|
metadata,
|
|
status,
|
|
block_height
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetServiceByID :one
|
|
SELECT * FROM services
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetServiceByAddress :one
|
|
SELECT * FROM services
|
|
WHERE address = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetServiceByChainAndAddress :one
|
|
SELECT * FROM services
|
|
WHERE chain_id = ? AND address = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: ListServicesByChain :many
|
|
SELECT * FROM services
|
|
WHERE chain_id = ? AND deleted_at IS NULL
|
|
ORDER BY name ASC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: ListServicesByOwner :many
|
|
SELECT * FROM services
|
|
WHERE owner_address = ? AND deleted_at IS NULL
|
|
ORDER BY created_at DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: UpdateService :one
|
|
UPDATE services
|
|
SET
|
|
name = ?,
|
|
description = ?,
|
|
owner_address = ?,
|
|
metadata = ?,
|
|
status = ?,
|
|
block_height = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: SoftDeleteService :exec
|
|
UPDATE services
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- ACTIVITY QUERIES
|
|
-- name: InsertActivity :one
|
|
INSERT INTO activities (
|
|
account_id,
|
|
tx_hash,
|
|
tx_type,
|
|
status,
|
|
amount,
|
|
fee,
|
|
gas_used,
|
|
gas_wanted,
|
|
memo,
|
|
block_height,
|
|
timestamp,
|
|
raw_log,
|
|
error
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetActivityByID :one
|
|
SELECT * FROM activities
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetActivityByTxHash :one
|
|
SELECT * FROM activities
|
|
WHERE tx_hash = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: ListActivitiesByAccount :many
|
|
SELECT * FROM activities
|
|
WHERE account_id = ? AND deleted_at IS NULL
|
|
ORDER BY timestamp DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: ListActivitiesByType :many
|
|
SELECT * FROM activities
|
|
WHERE tx_type = ? AND deleted_at IS NULL
|
|
ORDER BY timestamp DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: ListActivitiesByStatus :many
|
|
SELECT * FROM activities
|
|
WHERE status = ? AND deleted_at IS NULL
|
|
ORDER BY timestamp DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: UpdateActivityStatus :one
|
|
UPDATE activities
|
|
SET
|
|
status = ?,
|
|
tx_hash = ?,
|
|
block_height = ?,
|
|
gas_used = ?,
|
|
raw_log = ?,
|
|
error = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: SoftDeleteActivity :exec
|
|
UPDATE activities
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- HEALTH QUERIES
|
|
-- name: InsertHealth :one
|
|
INSERT INTO health (
|
|
endpoint_url,
|
|
endpoint_type,
|
|
chain_id,
|
|
status,
|
|
response_time_ms,
|
|
last_checked,
|
|
next_check,
|
|
failure_count,
|
|
success_count,
|
|
response_data,
|
|
error_message
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetHealthByID :one
|
|
SELECT * FROM health
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetHealthByEndpoint :one
|
|
SELECT * FROM health
|
|
WHERE endpoint_url = ? AND deleted_at IS NULL
|
|
ORDER BY last_checked DESC
|
|
LIMIT 1;
|
|
|
|
-- name: ListHealthByChain :many
|
|
SELECT * FROM health
|
|
WHERE chain_id = ? AND deleted_at IS NULL
|
|
ORDER BY last_checked DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: ListHealthByStatus :many
|
|
SELECT * FROM health
|
|
WHERE status = ? AND deleted_at IS NULL
|
|
ORDER BY last_checked DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: ListHealthChecksNeedingUpdate :many
|
|
SELECT * FROM health
|
|
WHERE next_check <= CURRENT_TIMESTAMP AND deleted_at IS NULL
|
|
ORDER BY next_check ASC
|
|
LIMIT ?;
|
|
|
|
-- name: UpdateHealthCheck :one
|
|
UPDATE health
|
|
SET
|
|
status = ?,
|
|
response_time_ms = ?,
|
|
last_checked = CURRENT_TIMESTAMP,
|
|
next_check = ?,
|
|
failure_count = CASE WHEN status = 'failed' THEN failure_count + 1 ELSE failure_count END,
|
|
success_count = CASE WHEN status = 'success' THEN success_count + 1 ELSE success_count END,
|
|
response_data = ?,
|
|
error_message = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: SoftDeleteHealth :exec
|
|
UPDATE health
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
|
|
-- name: GetGlobalMarketByID :one
|
|
SELECT * FROM global_market
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetLatestGlobalMarket :one
|
|
SELECT * FROM global_market
|
|
WHERE deleted_at IS NULL
|
|
ORDER BY last_updated DESC
|
|
LIMIT 1;
|
|
|
|
-- name: ListGlobalMarketHistory :many
|
|
SELECT * FROM global_market
|
|
WHERE deleted_at IS NULL
|
|
ORDER BY last_updated DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: UpdateGlobalMarket :one
|
|
UPDATE global_market
|
|
SET
|
|
total_market_cap_usd = ?,
|
|
total_24h_volume_usd = ?,
|
|
bitcoin_percentage_of_market_cap = ?,
|
|
active_currencies = ?,
|
|
active_assets = ?,
|
|
active_markets = ?,
|
|
last_updated = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: SoftDeleteGlobalMarket :exec
|
|
UPDATE global_market
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- FEAR AND GREED INDEX QUERIES (NEW)
|
|
-- name: InsertFearGreedIndex :one
|
|
INSERT INTO fear_greed_index (
|
|
value,
|
|
value_classification,
|
|
timestamp,
|
|
time_until_update
|
|
) VALUES (?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetFearGreedIndexByID :one
|
|
SELECT * FROM fear_greed_index
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetLatestFearGreedIndex :one
|
|
SELECT * FROM fear_greed_index
|
|
WHERE deleted_at IS NULL
|
|
ORDER BY timestamp DESC
|
|
LIMIT 1;
|
|
|
|
-- name: ListFearGreedIndexHistory :many
|
|
SELECT * FROM fear_greed_index
|
|
WHERE deleted_at IS NULL
|
|
ORDER BY timestamp DESC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: UpdateFearGreedIndex :one
|
|
UPDATE fear_greed_index
|
|
SET
|
|
value = ?,
|
|
value_classification = ?,
|
|
timestamp = ?,
|
|
time_until_update = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: InsertGlobalMarket :one
|
|
INSERT INTO global_market (
|
|
total_market_cap_usd,
|
|
total_24h_volume_usd,
|
|
bitcoin_percentage_of_market_cap,
|
|
active_currencies,
|
|
active_assets,
|
|
active_markets,
|
|
last_updated
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
|
|
-- name: SoftDeleteFearGreedIndex :exec
|
|
UPDATE fear_greed_index
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- CRYPTO LISTINGS QUERIES (NEW)
|
|
-- name: InsertCryptoListing :one
|
|
INSERT INTO crypto_listings (
|
|
api_id,
|
|
name,
|
|
symbol,
|
|
website_slug
|
|
) VALUES (?, ?, ?, ?)
|
|
RETURNING *;
|
|
|
|
-- name: GetCryptoListingByID :one
|
|
SELECT * FROM crypto_listings
|
|
WHERE id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetCryptoListingByApiID :one
|
|
SELECT * FROM crypto_listings
|
|
WHERE api_id = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetCryptoListingBySymbol :one
|
|
SELECT * FROM crypto_listings
|
|
WHERE symbol = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: GetCryptoListingByWebsiteSlug :one
|
|
SELECT * FROM crypto_listings
|
|
WHERE website_slug = ? AND deleted_at IS NULL
|
|
LIMIT 1;
|
|
|
|
-- name: ListCryptoListings :many
|
|
SELECT * FROM crypto_listings
|
|
WHERE deleted_at IS NULL
|
|
ORDER BY name ASC
|
|
LIMIT ? OFFSET ?;
|
|
|
|
-- name: UpdateCryptoListing :one
|
|
UPDATE crypto_listings
|
|
SET
|
|
name = ?,
|
|
symbol = ?,
|
|
website_slug = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
AND deleted_at IS NULL
|
|
RETURNING *;
|
|
|
|
-- name: SoftDeleteCryptoListing :exec
|
|
UPDATE crypto_listings
|
|
SET deleted_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|