snapshot
This commit is contained in:
5
db/migration/000001_init.down.sql
Normal file
5
db/migration/000001_init.down.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
DROP TABLE IF EXISTS "orders";
|
||||
DROP TABLE IF EXISTS "validations";
|
||||
DROP TABLE IF EXISTS "pricing_results";
|
||||
DROP TABLE IF EXISTS "buyer_requests";
|
||||
DROP TABLE IF EXISTS "data_assets";
|
||||
95
db/migration/000001_init.up.sql
Normal file
95
db/migration/000001_init.up.sql
Normal file
@@ -0,0 +1,95 @@
|
||||
CREATE TABLE IF NOT EXISTS "data_assets"
|
||||
(
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
asset_name TEXT NOT NULL,
|
||||
asset_type TEXT NOT NULL,
|
||||
domain TEXT NOT NULL,
|
||||
application_scene TEXT,
|
||||
data_description TEXT NOT NULL,
|
||||
data_scale TEXT NOT NULL,
|
||||
collection_method TEXT NOT NULL,
|
||||
labeling_status TEXT,
|
||||
update_frequency TEXT,
|
||||
privacy_level TEXT NOT NULL,
|
||||
permission_mode TEXT NOT NULL,
|
||||
supports_validation BOOLEAN NOT NULL,
|
||||
seller_expected_price_min NUMERIC(20, 2),
|
||||
seller_expected_price_max NUMERIC(20, 2),
|
||||
quality_level TEXT,
|
||||
scarcity_level TEXT,
|
||||
base_value_score NUMERIC(20, 2),
|
||||
base_price_min NUMERIC(20, 2),
|
||||
base_price_max NUMERIC(20, 2),
|
||||
asset_status TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "buyer_requests"
|
||||
(
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
asset_id UUID NOT NULL REFERENCES data_assets (id),
|
||||
task_type TEXT NOT NULL,
|
||||
model_type TEXT NOT NULL,
|
||||
buyer_budget_min NUMERIC(20, 2),
|
||||
buyer_budget_max NUMERIC(20, 2),
|
||||
privacy_requirement TEXT,
|
||||
usage_purpose TEXT,
|
||||
request_note TEXT,
|
||||
request_status TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "pricing_results"
|
||||
(
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
asset_id UUID NOT NULL REFERENCES data_assets (id),
|
||||
request_id UUID REFERENCES buyer_requests (id),
|
||||
scenario_value_score NUMERIC(20, 2),
|
||||
scenario_price_min NUMERIC(20, 2),
|
||||
scenario_price_max NUMERIC(20, 2),
|
||||
suggested_price NUMERIC(20, 2),
|
||||
success_probability NUMERIC(5, 4),
|
||||
pricing_reason_1 TEXT,
|
||||
pricing_reason_2 TEXT,
|
||||
pricing_reason_3 TEXT,
|
||||
verification_suggestion TEXT,
|
||||
pricing_status TEXT NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "validations"
|
||||
(
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
asset_id UUID NOT NULL REFERENCES data_assets (id),
|
||||
request_id UUID REFERENCES buyer_requests (id),
|
||||
validation_type TEXT,
|
||||
validation_requested BOOLEAN NOT NULL,
|
||||
validation_status TEXT NOT NULL,
|
||||
validation_signal TEXT,
|
||||
validation_score NUMERIC(5, 4),
|
||||
risk_warning TEXT,
|
||||
continue_recommendation TEXT,
|
||||
validation_created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
validation_finished_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "orders"
|
||||
(
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
asset_id UUID NOT NULL REFERENCES data_assets (id),
|
||||
request_id UUID REFERENCES buyer_requests (id),
|
||||
pricing_id UUID REFERENCES pricing_results (id),
|
||||
validation_id UUID REFERENCES validations (id),
|
||||
asset_name TEXT NOT NULL,
|
||||
current_price NUMERIC(20, 2) NOT NULL,
|
||||
negotiation_min NUMERIC(20, 2),
|
||||
negotiation_max NUMERIC(20, 2),
|
||||
validation_used BOOLEAN NOT NULL,
|
||||
delivery_mode TEXT NOT NULL,
|
||||
order_status TEXT NOT NULL,
|
||||
order_created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
order_updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
87
db/query/market.sql
Normal file
87
db/query/market.sql
Normal file
@@ -0,0 +1,87 @@
|
||||
-- name: CreateDataAsset :one
|
||||
INSERT INTO data_assets (asset_name, asset_type, domain, application_scene,
|
||||
data_description, data_scale, collection_method, labeling_status,
|
||||
update_frequency, privacy_level, permission_mode, supports_validation,
|
||||
seller_expected_price_min, seller_expected_price_max, asset_status)
|
||||
VALUES ($1, $2, $3, $4,
|
||||
$5, $6, $7, $8,
|
||||
$9, $10, $11, $12,
|
||||
$13, $14, $15)
|
||||
RETURNING *;
|
||||
|
||||
|
||||
-- name: GetDataAsset :one
|
||||
SELECT *
|
||||
FROM data_assets
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ListDataAssets :many
|
||||
SELECT *
|
||||
FROM data_assets
|
||||
WHERE (
|
||||
NULLIF(sqlc.narg(keyword)::text, '') IS NULL
|
||||
OR asset_name ILIKE '%' || sqlc.narg(keyword)::text || '%'
|
||||
OR data_description ILIKE '%' || sqlc.narg(keyword)::text || '%'
|
||||
)
|
||||
AND (
|
||||
NULLIF(sqlc.narg(asset_type)::text, '') IS NULL
|
||||
OR asset_type = sqlc.narg(asset_type)::text
|
||||
)
|
||||
AND (
|
||||
NULLIF(sqlc.narg(domain)::text, '') IS NULL
|
||||
OR domain = sqlc.narg(domain)::text
|
||||
)
|
||||
AND (
|
||||
NULLIF(sqlc.narg(privacy_level)::text, '') IS NULL
|
||||
OR privacy_level = sqlc.narg(privacy_level)::text
|
||||
)
|
||||
AND (
|
||||
sqlc.narg(supports_validation)::boolean IS NULL
|
||||
OR supports_validation = sqlc.narg(supports_validation)::boolean
|
||||
)
|
||||
ORDER BY created_at DESC, id DESC
|
||||
LIMIT $1 OFFSET $2;
|
||||
|
||||
-- name: GetBuyerRequest :one
|
||||
SELECT *
|
||||
FROM buyer_requests
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ListBuyerRequests :many
|
||||
SELECT *
|
||||
FROM buyer_requests
|
||||
ORDER BY created_at DESC, id DESC
|
||||
LIMIT $1 OFFSET $2;
|
||||
|
||||
-- name: GetPricingResult :one
|
||||
SELECT *
|
||||
FROM pricing_results
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ListPricingResults :many
|
||||
SELECT *
|
||||
FROM pricing_results
|
||||
ORDER BY created_at DESC, id DESC
|
||||
LIMIT $1 OFFSET $2;
|
||||
|
||||
-- name: GetValidation :one
|
||||
SELECT *
|
||||
FROM validations
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ListValidations :many
|
||||
SELECT *
|
||||
FROM validations
|
||||
ORDER BY validation_created_at DESC, id DESC
|
||||
LIMIT $1 OFFSET $2;
|
||||
|
||||
-- name: GetOrder :one
|
||||
SELECT *
|
||||
FROM orders
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: ListOrders :many
|
||||
SELECT *
|
||||
FROM orders
|
||||
ORDER BY order_created_at DESC, id DESC
|
||||
LIMIT $1 OFFSET $2;
|
||||
Reference in New Issue
Block a user