copilot_work_3 / infra /bigquery_schema.sql
arshvinw5's picture
add rate limit to submittions
416bdd1
Raw History Blame
1.65 kB
CREATE TABLE IF NOT EXISTS `YOUR_PROJECT_ID.YOUR_DATASET.tools` (
tool_id STRING NOT NULL,
slug STRING NOT NULL,
name STRING NOT NULL,
summary STRING NOT NULL,
category STRING NOT NULL,
repo_url STRING NOT NULL,
-- Lowercase owner/repo, used to reject duplicate submissions (not enforced by BigQuery).
repo_key STRING,
website_url STRING,
submitted_by STRING NOT NULL,
-- pending | approved | rejected. New submissions are pending until a moderator approves them.
status STRING,
created_at TIMESTAMP NOT NULL
)
PARTITION BY DATE(created_at)
CLUSTER BY category, slug;
CREATE TABLE IF NOT EXISTS `YOUR_PROJECT_ID.YOUR_DATASET.tool_ratings` (
tool_id STRING NOT NULL,
voter_id STRING NOT NULL,
rating INT64 NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
)
PARTITION BY DATE(created_at)
CLUSTER BY tool_id, voter_id;
-- ---------------------------------------------------------------------------
-- Migration for an existing deployment (run once, BEFORE deploying this version).
-- BigQuery cannot add NOT NULL columns, so both are nullable; the app treats a
-- NULL status as 'approved' until the backfill has run.
-- ---------------------------------------------------------------------------
-- ALTER TABLE `YOUR_PROJECT_ID.YOUR_DATASET.tools` ADD COLUMN IF NOT EXISTS repo_key STRING;
-- ALTER TABLE `YOUR_PROJECT_ID.YOUR_DATASET.tools` ADD COLUMN IF NOT EXISTS status STRING;
-- UPDATE `YOUR_PROJECT_ID.YOUR_DATASET.tools`
-- SET
-- status = COALESCE(status, 'approved'),
-- repo_key = LOWER(REGEXP_EXTRACT(repo_url, r'^https://github\.com/([^/]+/[^/]+?)(?:\.git)?/?$'))
-- WHERE TRUE;