feat: migrate db to postgres

This commit is contained in:
2024-08-09 22:17:09 +07:00
parent 0142224f60
commit 8ff59ba6b3
18 changed files with 462 additions and 215 deletions
@@ -0,0 +1,59 @@
CREATE TABLE IF NOT EXISTS "repository_languages" (
"id" serial PRIMARY KEY NOT NULL,
"repo_id" integer NOT NULL,
"name" varchar NOT NULL,
"percentage" double precision NOT NULL
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "repositories" (
"id" serial PRIMARY KEY NOT NULL,
"user_id" integer NOT NULL,
"name" varchar NOT NULL,
"uri" varchar NOT NULL,
"language" varchar NOT NULL,
"stars" integer NOT NULL,
"forks" integer NOT NULL,
"last_update" varchar NOT NULL,
"contributors" jsonb,
"is_pending" boolean DEFAULT false NOT NULL,
"is_error" boolean DEFAULT false NOT NULL,
"created_at" timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
"updated_at" timestamp NOT NULL
);
--> statement-breakpoint
CREATE TABLE IF NOT EXISTS "users" (
"id" serial PRIMARY KEY NOT NULL,
"username" varchar NOT NULL,
"name" varchar NOT NULL,
"avatar" varchar,
"location" varchar,
"followers" integer DEFAULT 0 NOT NULL,
"following" integer DEFAULT 0 NOT NULL,
"achievements" jsonb DEFAULT '[]'::jsonb,
"points" integer DEFAULT 0 NOT NULL,
"commits" integer DEFAULT 0 NOT NULL,
"line_of_codes" integer DEFAULT 0 NOT NULL,
"github_id" integer,
"access_token" varchar,
"created_at" timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
"updated_at" timestamp NOT NULL,
CONSTRAINT "users_username_unique" UNIQUE("username"),
CONSTRAINT "users_github_id_unique" UNIQUE("github_id")
);
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "repository_languages" ADD CONSTRAINT "repository_languages_repo_id_repositories_id_fk" FOREIGN KEY ("repo_id") REFERENCES "public"."repositories"("id") ON DELETE no action ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "repositories" ADD CONSTRAINT "repositories_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE no action ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;
--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "repository_languages_name_idx" ON "repository_languages" USING btree ("name");--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "repositories_name_idx" ON "repositories" USING btree ("name");--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "repositories_uri_idx" ON "repositories" USING btree ("uri");--> statement-breakpoint
CREATE INDEX IF NOT EXISTS "repositories_language_idx" ON "repositories" USING btree ("language");
@@ -1,49 +0,0 @@
CREATE TABLE `repository_languages` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`repo_id` integer NOT NULL,
`name` text NOT NULL,
`percentage` real NOT NULL,
FOREIGN KEY (`repo_id`) REFERENCES `repositories`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `repositories` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`user_id` integer NOT NULL,
`name` text NOT NULL,
`uri` text NOT NULL,
`language` text NOT NULL,
`stars` integer NOT NULL,
`forks` integer NOT NULL,
`last_update` text NOT NULL,
`contributors` text,
`is_pending` integer DEFAULT false NOT NULL,
`is_error` integer DEFAULT false NOT NULL,
`created_at` text DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` text NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action
);
--> statement-breakpoint
CREATE TABLE `users` (
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
`username` text NOT NULL,
`name` text NOT NULL,
`avatar` text,
`location` text,
`followers` integer DEFAULT 0 NOT NULL,
`following` integer DEFAULT 0 NOT NULL,
`achievements` text DEFAULT '[]',
`points` integer DEFAULT 0 NOT NULL,
`commits` integer DEFAULT 0 NOT NULL,
`line_of_codes` integer DEFAULT 0 NOT NULL,
`github_id` integer,
`access_token` text,
`created_at` text DEFAULT CURRENT_TIMESTAMP NOT NULL,
`updated_at` text NOT NULL
);
--> statement-breakpoint
CREATE INDEX `repository_languages_name_idx` ON `repository_languages` (`name`);--> statement-breakpoint
CREATE INDEX `repositories_name_idx` ON `repositories` (`name`);--> statement-breakpoint
CREATE INDEX `repositories_uri_idx` ON `repositories` (`uri`);--> statement-breakpoint
CREATE INDEX `repositories_language_idx` ON `repositories` (`language`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_username_unique` ON `users` (`username`);--> statement-breakpoint
CREATE UNIQUE INDEX `users_github_id_unique` ON `users` (`github_id`);
+107 -105
View File
@@ -1,48 +1,53 @@
{
"version": "6",
"dialect": "sqlite",
"id": "a268ec23-239a-4d86-8830-2f3c1c2110df",
"id": "5131e61a-98fe-40ef-b206-62b860d39639",
"prevId": "00000000-0000-0000-0000-000000000000",
"version": "7",
"dialect": "postgresql",
"tables": {
"repository_languages": {
"public.repository_languages": {
"name": "repository_languages",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"type": "serial",
"primaryKey": true,
"notNull": true,
"autoincrement": true
"notNull": true
},
"repo_id": {
"name": "repo_id",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"name": {
"name": "name",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"percentage": {
"name": "percentage",
"type": "real",
"type": "double precision",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
}
},
"indexes": {
"repository_languages_name_idx": {
"name": "repository_languages_name_idx",
"columns": [
"name"
{
"expression": "name",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
@@ -63,125 +68,137 @@
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"repositories": {
"public.repositories": {
"name": "repositories",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"type": "serial",
"primaryKey": true,
"notNull": true,
"autoincrement": true
"notNull": true
},
"user_id": {
"name": "user_id",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"name": {
"name": "name",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"uri": {
"name": "uri",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"language": {
"name": "language",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"stars": {
"name": "stars",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"forks": {
"name": "forks",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"last_update": {
"name": "last_update",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"contributors": {
"name": "contributors",
"type": "text",
"type": "jsonb",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": false
},
"is_pending": {
"name": "is_pending",
"type": "integer",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"is_error": {
"name": "is_error",
"type": "integer",
"type": "boolean",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"created_at": {
"name": "created_at",
"type": "text",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "CURRENT_TIMESTAMP"
},
"updated_at": {
"name": "updated_at",
"type": "text",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
}
},
"indexes": {
"repositories_name_idx": {
"name": "repositories_name_idx",
"columns": [
"name"
{
"expression": "name",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"repositories_uri_idx": {
"name": "repositories_uri_idx",
"columns": [
"uri"
{
"expression": "uri",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
},
"repositories_language_idx": {
"name": "repositories_language_idx",
"columns": [
"language"
{
"expression": "language",
"isExpression": false,
"asc": true,
"nulls": "last"
}
],
"isUnique": false
"isUnique": false,
"concurrently": false,
"method": "btree",
"with": {}
}
},
"foreignKeys": {
@@ -202,50 +219,45 @@
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"users": {
"public.users": {
"name": "users",
"schema": "",
"columns": {
"id": {
"name": "id",
"type": "integer",
"type": "serial",
"primaryKey": true,
"notNull": true,
"autoincrement": true
"notNull": true
},
"username": {
"name": "username",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"name": {
"name": "name",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
},
"avatar": {
"name": "avatar",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": false
},
"location": {
"name": "location",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": false
},
"followers": {
"name": "followers",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"following": {
@@ -253,23 +265,20 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"achievements": {
"name": "achievements",
"type": "text",
"type": "jsonb",
"primaryKey": false,
"notNull": false,
"autoincrement": false,
"default": "'[]'"
"default": "'[]'::jsonb"
},
"points": {
"name": "points",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"commits": {
@@ -277,7 +286,6 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"line_of_codes": {
@@ -285,67 +293,61 @@
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": 0
},
"github_id": {
"name": "github_id",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": false
},
"access_token": {
"name": "access_token",
"type": "text",
"type": "varchar",
"primaryKey": false,
"notNull": false,
"autoincrement": false
"notNull": false
},
"created_at": {
"name": "created_at",
"type": "text",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "CURRENT_TIMESTAMP"
},
"updated_at": {
"name": "updated_at",
"type": "text",
"type": "timestamp",
"primaryKey": false,
"notNull": true,
"autoincrement": false
"notNull": true
}
},
"indexes": {
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {
"users_username_unique": {
"name": "users_username_unique",
"nullsNotDistinct": false,
"columns": [
"username"
],
"isUnique": true
]
},
"users_github_id_unique": {
"name": "users_github_id_unique",
"nullsNotDistinct": false,
"columns": [
"github_id"
],
"isUnique": true
]
}
},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
}
}
},
"enums": {},
"schemas": {},
"sequences": {},
"_meta": {
"columns": {},
"schemas": {},
"tables": {},
"columns": {}
},
"internal": {
"indexes": {}
"tables": {}
}
}
+3 -3
View File
@@ -4,9 +4,9 @@
"entries": [
{
"idx": 0,
"version": "6",
"when": 1723211354217,
"tag": "0000_tough_jubilee",
"version": "7",
"when": 1723216591610,
"tag": "0000_round_hellion",
"breakpoints": true
}
]