← back to Open Seo
drizzle/0002_fair_toad_men.sql
68 lines
CREATE TABLE `__keyword_metrics_project_guard` (
`ok` integer NOT NULL,
CHECK (`ok` = 1)
);--> statement-breakpoint
INSERT INTO `__keyword_metrics_project_guard` (`ok`)
SELECT
CASE
WHEN (
SELECT COUNT(*) FROM `keyword_metrics`
) = 0 THEN 1
WHEN (
SELECT COUNT(*) FROM `projects`
) = 1 THEN 1
ELSE 0
END;--> statement-breakpoint
DROP TABLE `__keyword_metrics_project_guard`;--> statement-breakpoint
ALTER TABLE `keyword_metrics` RENAME TO `keyword_metrics_legacy`;--> statement-breakpoint
CREATE TABLE `keyword_metrics` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`project_id` text NOT NULL,
`keyword` text NOT NULL,
`location_code` integer NOT NULL,
`language_code` text DEFAULT 'en' NOT NULL,
`search_volume` integer,
`cpc` real,
`competition` real,
`keyword_difficulty` integer,
`intent` text,
`monthly_searches` text,
`fetched_at` text DEFAULT (current_timestamp) NOT NULL,
FOREIGN KEY (`project_id`) REFERENCES `projects`(`id`) ON UPDATE no action ON DELETE cascade
);--> statement-breakpoint
INSERT INTO `keyword_metrics` (
`project_id`,
`keyword`,
`location_code`,
`language_code`,
`search_volume`,
`cpc`,
`competition`,
`keyword_difficulty`,
`intent`,
`monthly_searches`,
`fetched_at`
)
SELECT
(
SELECT `id`
FROM `projects`
ORDER BY `created_at` ASC, `id` ASC
LIMIT 1
),
`keyword`,
`location_code`,
`language_code`,
`search_volume`,
`cpc`,
`competition`,
`keyword_difficulty`,
`intent`,
`monthly_searches`,
`fetched_at`
FROM `keyword_metrics_legacy`;--> statement-breakpoint
DROP TABLE `keyword_metrics_legacy`;--> statement-breakpoint
CREATE UNIQUE INDEX `keyword_metrics_unique_project_keyword_location_language` ON `keyword_metrics` (`project_id`,`keyword`,`location_code`,`language_code`);--> statement-breakpoint
CREATE INDEX `keyword_metrics_lookup_idx` ON `keyword_metrics` (`project_id`,`keyword`,`location_code`,`language_code`,`fetched_at`);