agritech-api / database /schema.sql
github-actions
Deploy API from GitHub Actions
42dfbed
Raw
History Blame Contribute Delete
2.49 kB
CREATE TABLE IF NOT EXISTS api_requests (
id SERIAL PRIMARY KEY,
timestamp TIMESTAMP NOT NULL,
endpoint VARCHAR(50) NOT NULL,
status_code INTEGER NOT NULL,
success BOOLEAN NOT NULL,
error_message TEXT,
latency_ms FLOAT,
model_name VARCHAR(255),
model_version VARCHAR(50),
input_json JSONB,
output_json JSONB
);
CREATE TABLE IF NOT EXISTS inference_steps (
id SERIAL PRIMARY KEY,
request_id INTEGER REFERENCES api_requests(id),
step_name VARCHAR(100) NOT NULL,
success BOOLEAN NOT NULL,
error_message TEXT,
duration_ms FLOAT,
details_json JSONB
);
CREATE TABLE IF NOT EXISTS api_predictions (
id SERIAL PRIMARY KEY,
request_id INTEGER REFERENCES api_requests(id),
area VARCHAR(255),
item VARCHAR(255),
recommended_crop VARCHAR(255),
predicted_yield FLOAT,
n_candidates INTEGER,
prediction_type VARCHAR(50)
);
CREATE TABLE IF NOT EXISTS api_recommendation_details (
id SERIAL PRIMARY KEY,
request_id INTEGER REFERENCES api_requests(id),
rank INTEGER NOT NULL,
item VARCHAR(255) NOT NULL,
predicted_yield FLOAT NOT NULL
);
CREATE TABLE IF NOT EXISTS country_crop_mapping (
id SERIAL PRIMARY KEY,
area VARCHAR(255) NOT NULL,
item VARCHAR(255) NOT NULL,
source VARCHAR(50) DEFAULT 'train',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE(area, item)
);
CREATE TABLE IF NOT EXISTS reference_distributions (
id SERIAL PRIMARY KEY,
feature_name VARCHAR(100) NOT NULL,
feature_value TEXT NOT NULL,
source VARCHAR(50) DEFAULT 'train',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX IF NOT EXISTS idx_reference_distributions_feature
ON reference_distributions(feature_name);CREATE INDEX IF NOT EXISTS idx_country_crop_mapping_area
ON country_crop_mapping(area);
CREATE INDEX IF NOT EXISTS idx_country_crop_mapping_item
ON country_crop_mapping(item);
CREATE INDEX IF NOT EXISTS idx_api_requests_timestamp
ON api_requests(timestamp);
CREATE INDEX IF NOT EXISTS idx_api_requests_endpoint
ON api_requests(endpoint);
CREATE INDEX IF NOT EXISTS idx_api_predictions_area
ON api_predictions(area);
CREATE INDEX IF NOT EXISTS idx_api_predictions_recommended_crop
ON api_predictions(recommended_crop);
CREATE INDEX IF NOT EXISTS idx_recommendation_details_request_id
ON api_recommendation_details(request_id);
CREATE INDEX IF NOT EXISTS idx_recommendation_details_item
ON api_recommendation_details(item);