mirror of
https://github.com/muety/wakapi.git
synced 2023-08-10 21:12:56 +03:00
fix: adapt tests
This commit is contained in:
parent
b0bd26f0ec
commit
adcd7b35ae
File diff suppressed because it is too large
Load Diff
4
main.go
4
main.go
@ -120,10 +120,6 @@ func main() {
|
||||
db, err = gorm.Open(config.Db.GetDialector(), &gorm.Config{Logger: gormLogger})
|
||||
if config.Db.IsSQLite() {
|
||||
db.Exec("PRAGMA foreign_keys = ON;")
|
||||
if !utils.IsCleanDB(db) && !utils.HasConstraints(db) {
|
||||
db.DisableForeignKeyConstraintWhenMigrating = true
|
||||
logbuch.Warn("using existing sqlite database without foreign key constraints and no ability to migrate, functionality may be limited")
|
||||
}
|
||||
}
|
||||
|
||||
if config.IsDev() {
|
||||
|
@ -126,18 +126,18 @@ func (r *UserRepository) Count() (int64, error) {
|
||||
}
|
||||
|
||||
func (r *UserRepository) InsertOrGet(user *models.User) (*models.User, bool, error) {
|
||||
result := r.db.FirstOrCreate(user, &models.User{ID: user.ID})
|
||||
if u, err := r.GetById(user.ID); err == nil && u != nil && u.ID != "" {
|
||||
return u, false, nil
|
||||
}
|
||||
|
||||
result := r.db.Create(user)
|
||||
if err := result.Error; err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
|
||||
if result.RowsAffected == 1 {
|
||||
return user, true, nil
|
||||
}
|
||||
|
||||
return user, false, nil
|
||||
}
|
||||
|
||||
func (r *UserRepository) Update(user *models.User) (*models.User, error) {
|
||||
updateMap := map[string]interface{}{
|
||||
"api_key": user.ApiKey,
|
||||
|
@ -50,7 +50,7 @@ func (suite *SummaryServiceTestSuite) SetupSuite() {
|
||||
suite.TestStartTime = time.Unix(0, MinUnixTime1)
|
||||
suite.TestHeartbeats = []*models.Heartbeat{
|
||||
{
|
||||
ID: uint(rand.Uint32()),
|
||||
ID: rand.Uint64(),
|
||||
UserID: TestUserId,
|
||||
Project: TestProject1,
|
||||
Language: TestLanguageGo,
|
||||
@ -60,7 +60,7 @@ func (suite *SummaryServiceTestSuite) SetupSuite() {
|
||||
Time: models.CustomTime(suite.TestStartTime),
|
||||
},
|
||||
{
|
||||
ID: uint(rand.Uint32()),
|
||||
ID: rand.Uint64(),
|
||||
UserID: TestUserId,
|
||||
Project: TestProject1,
|
||||
Language: TestLanguageGo,
|
||||
@ -70,7 +70,7 @@ func (suite *SummaryServiceTestSuite) SetupSuite() {
|
||||
Time: models.CustomTime(suite.TestStartTime.Add(30 * time.Second)),
|
||||
},
|
||||
{
|
||||
ID: uint(rand.Uint32()),
|
||||
ID: rand.Uint64(),
|
||||
UserID: TestUserId,
|
||||
Project: TestProject1,
|
||||
Language: TestLanguageGo,
|
||||
@ -375,7 +375,7 @@ func (suite *SummaryServiceTestSuite) TestSummaryService_Aliased() {
|
||||
|
||||
heartbeats := filter(from, to, suite.TestHeartbeats)
|
||||
heartbeats = append(heartbeats, &models.Heartbeat{
|
||||
ID: uint(rand.Uint32()),
|
||||
ID: rand.Uint64(),
|
||||
UserID: TestUserId,
|
||||
Project: TestProject2,
|
||||
Language: TestLanguageGo,
|
||||
@ -414,7 +414,7 @@ func (suite *SummaryServiceTestSuite) TestSummaryService_Aliased_ProjectLabels()
|
||||
|
||||
heartbeats := filter(from, to, suite.TestHeartbeats)
|
||||
heartbeats = append(heartbeats, &models.Heartbeat{
|
||||
ID: uint(rand.Uint32()),
|
||||
ID: rand.Uint64(),
|
||||
UserID: TestUserId,
|
||||
Project: TestProject2,
|
||||
Language: TestLanguageGo,
|
||||
|
@ -1,3 +1,15 @@
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO "key_string_values" VALUES ('20210213-add_has_data_field','done');
|
||||
INSERT INTO "key_string_values" VALUES ('20210221-add_created_date_column','done');
|
||||
INSERT INTO "key_string_values" VALUES ('imprint','no content here');
|
||||
INSERT INTO "key_string_values" VALUES ('20210411-add_imprint_content','done');
|
||||
INSERT INTO "key_string_values" VALUES ('20210806-remove_persisted_project_labels','done');
|
||||
INSERT INTO "key_string_values" VALUES ('20211215-migrate_id_to_bigint-add_has_data_field','done');
|
||||
INSERT INTO "key_string_values" VALUES ('latest_total_time','0s');
|
||||
INSERT INTO "key_string_values" VALUES ('latest_total_users','0');
|
||||
COMMIT;
|
||||
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
INSERT INTO "users" ("id", "api_key", "email", "location", "password", "created_at", "last_logged_in_at",
|
||||
"share_data_max_days", "share_editors", "share_languages", "share_projects", "share_oss",
|
||||
|
@ -1,147 +1,53 @@
|
||||
-- Created with SQLite DB Browser through:
|
||||
-- File -> Export -> to SQL file
|
||||
-- with options:
|
||||
-- Overwrite, Keep original CREATE
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
DROP TABLE IF EXISTS "users";
|
||||
CREATE TABLE IF NOT EXISTS "users" (
|
||||
"id" text,
|
||||
"api_key" text UNIQUE,
|
||||
"email" text,
|
||||
"password" text,
|
||||
"created_at" timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||
"last_logged_in_at" timestamp DEFAULT CURRENT_TIMESTAMP,
|
||||
"share_data_max_days" integer DEFAULT 0,
|
||||
"share_editors" numeric DEFAULT false,
|
||||
"share_languages" numeric DEFAULT false,
|
||||
"share_projects" numeric DEFAULT false,
|
||||
"share_oss" numeric DEFAULT false,
|
||||
"share_machines" numeric DEFAULT false,
|
||||
"is_admin" numeric DEFAULT false,
|
||||
"has_data" numeric DEFAULT false,
|
||||
"wakatime_api_key" text,
|
||||
"reset_token" text,
|
||||
"location" text,
|
||||
"reports_weekly" numeric DEFAULT false,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
DROP TABLE IF EXISTS "key_string_values";
|
||||
CREATE TABLE IF NOT EXISTS "key_string_values" (
|
||||
"key" text,
|
||||
"value" text,
|
||||
PRIMARY KEY("key")
|
||||
);
|
||||
DROP TABLE IF EXISTS "summary_items";
|
||||
CREATE TABLE IF NOT EXISTS "summary_items" (
|
||||
"id" integer,
|
||||
"summary_id" integer,
|
||||
"type" integer,
|
||||
"key" text,
|
||||
"total" integer,
|
||||
CONSTRAINT "fk_summaries_languages" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "fk_summary_items_summary" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "fk_summaries_machines" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "fk_summaries_projects" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "fk_summaries_operating_systems" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT "fk_summaries_editors" FOREIGN KEY("summary_id") REFERENCES "summaries"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
DROP TABLE IF EXISTS "aliases";
|
||||
CREATE TABLE IF NOT EXISTS "aliases" (
|
||||
"id" integer,
|
||||
"type" integer NOT NULL,
|
||||
"user_id" text NOT NULL,
|
||||
"key" text NOT NULL,
|
||||
"value" text NOT NULL,
|
||||
CONSTRAINT "fk_aliases_user" FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
CREATE TABLE `aliases` (`id` integer,`type` integer NOT NULL,`user_id` text NOT NULL,`key` text NOT NULL,`value` text NOT NULL,PRIMARY KEY (`id`),CONSTRAINT `fk_aliases_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "diagnostics";
|
||||
CREATE TABLE `diagnostics` (`id` integer,`user_id` text NOT NULL,`platform` text,`architecture` text,`plugin` text,`cli_version` text,`logs` text,`stack_trace` text,PRIMARY KEY (`id`),CONSTRAINT `fk_diagnostics_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "heartbeats";
|
||||
CREATE TABLE IF NOT EXISTS "heartbeats" (
|
||||
"id" integer,
|
||||
"user_id" text NOT NULL,
|
||||
"entity" text NOT NULL,
|
||||
"type" text,
|
||||
"category" text,
|
||||
"project" text,
|
||||
"branch" text,
|
||||
"language" text,
|
||||
"is_write" numeric,
|
||||
"editor" text,
|
||||
"operating_system" text,
|
||||
"machine" text,
|
||||
"time" timestamp,
|
||||
"hash" varchar(17),
|
||||
"origin" text,
|
||||
"origin_id" text,
|
||||
"created_at" timestamp,
|
||||
CONSTRAINT "fk_heartbeats_user" FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
DROP TABLE IF EXISTS "summaries";
|
||||
CREATE TABLE IF NOT EXISTS "summaries" (
|
||||
"id" integer,
|
||||
"user_id" text NOT NULL,
|
||||
"from_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"to_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT "fk_summaries_user" FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
CREATE TABLE `heartbeats` (`id` integer,`user_id` text NOT NULL,`entity` text NOT NULL,`type` text,`category` text,`project` text,`branch` text,`language` text,`is_write` numeric,`editor` text,`operating_system` text,`machine` text,`user_agent` text,`time` timestamp,`hash` varchar(17),`origin` text,`origin_id` text,`created_at` timestamp,PRIMARY KEY (`id`),CONSTRAINT `fk_heartbeats_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "key_string_values";
|
||||
CREATE TABLE `key_string_values` (`key` text,`value` text,PRIMARY KEY (`key`));
|
||||
DROP TABLE IF EXISTS "language_mappings";
|
||||
CREATE TABLE IF NOT EXISTS "language_mappings" (
|
||||
"id" integer,
|
||||
"user_id" text NOT NULL,
|
||||
"extension" varchar(16),
|
||||
"language" varchar(64),
|
||||
CONSTRAINT "fk_language_mappings_user" FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_user_email";
|
||||
CREATE INDEX IF NOT EXISTS "idx_user_email" ON "users" (
|
||||
"email"
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_type";
|
||||
CREATE INDEX IF NOT EXISTS "idx_type" ON "summary_items" (
|
||||
"type"
|
||||
);
|
||||
CREATE TABLE `language_mappings` (`id` integer,`user_id` text NOT NULL,`extension` varchar(16),`language` varchar(64),PRIMARY KEY (`id`),CONSTRAINT `fk_language_mappings_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "project_labels";
|
||||
CREATE TABLE `project_labels` (`id` integer,`user_id` text NOT NULL,`project_key` text,`label` varchar(64),PRIMARY KEY (`id`),CONSTRAINT `fk_project_labels_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "summaries";
|
||||
CREATE TABLE "summaries" (`id` integer,`user_id` text NOT NULL,`from_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`to_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,PRIMARY KEY (`id`),CONSTRAINT `fk_summaries_user` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "summary_items";
|
||||
CREATE TABLE `summary_items` (`id` integer,`summary_id` integer,`type` integer,`key` text,`total` integer,PRIMARY KEY (`id`),CONSTRAINT `fk_summaries_editors` FOREIGN KEY (`summary_id`) REFERENCES `summaries`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `fk_summaries_operating_systems` FOREIGN KEY (`summary_id`) REFERENCES `summaries`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `fk_summaries_machines` FOREIGN KEY (`summary_id`) REFERENCES `summaries`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `fk_summaries_projects` FOREIGN KEY (`summary_id`) REFERENCES `summaries`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `fk_summaries_languages` FOREIGN KEY (`summary_id`) REFERENCES `summaries`(`id`) ON DELETE CASCADE ON UPDATE CASCADE);
|
||||
DROP TABLE IF EXISTS "users";
|
||||
CREATE TABLE `users` (`id` text,`api_key` text UNIQUE,`email` text,`location` text,`password` text,`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,`last_logged_in_at` timestamp DEFAULT CURRENT_TIMESTAMP,`share_data_max_days` integer DEFAULT 0,`share_editors` numeric DEFAULT false,`share_languages` numeric DEFAULT false,`share_projects` numeric DEFAULT false,`share_oss` numeric DEFAULT false,`share_machines` numeric DEFAULT false,`share_labels` numeric DEFAULT false,`is_admin` numeric DEFAULT false,`has_data` numeric DEFAULT false,`wakatime_api_key` text,`reset_token` text,`reports_weekly` numeric DEFAULT false,PRIMARY KEY (`id`));
|
||||
DROP INDEX IF EXISTS "idx_alias_type_key";
|
||||
CREATE INDEX IF NOT EXISTS "idx_alias_type_key" ON "aliases" (
|
||||
"type",
|
||||
"key"
|
||||
);
|
||||
CREATE INDEX `idx_alias_type_key` ON `aliases`(`type`,`key`);
|
||||
DROP INDEX IF EXISTS "idx_alias_user";
|
||||
CREATE INDEX IF NOT EXISTS "idx_alias_user" ON "aliases" (
|
||||
"user_id"
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_time";
|
||||
CREATE INDEX IF NOT EXISTS "idx_time" ON "heartbeats" (
|
||||
"time"
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_heartbeats_hash";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "idx_heartbeats_hash" ON "heartbeats" (
|
||||
"hash"
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_time_user";
|
||||
CREATE INDEX IF NOT EXISTS "idx_time_user" ON "heartbeats" (
|
||||
"user_id"
|
||||
);
|
||||
CREATE INDEX `idx_alias_user` ON `aliases`(`user_id`);
|
||||
DROP INDEX IF EXISTS "idx_diagnostics_user";
|
||||
CREATE INDEX `idx_diagnostics_user` ON `diagnostics`(`user_id`);
|
||||
DROP INDEX IF EXISTS "idx_entity";
|
||||
CREATE INDEX IF NOT EXISTS "idx_entity" ON "heartbeats" (
|
||||
"entity"
|
||||
);
|
||||
CREATE INDEX `idx_entity` ON `heartbeats`(`entity`);
|
||||
DROP INDEX IF EXISTS "idx_heartbeats_hash";
|
||||
CREATE UNIQUE INDEX `idx_heartbeats_hash` ON `heartbeats`(`hash`);
|
||||
DROP INDEX IF EXISTS "idx_language";
|
||||
CREATE INDEX IF NOT EXISTS "idx_language" ON "heartbeats" (
|
||||
"language"
|
||||
);
|
||||
DROP INDEX IF EXISTS "idx_time_summary_user";
|
||||
CREATE INDEX IF NOT EXISTS "idx_time_summary_user" ON "summaries" (
|
||||
"user_id",
|
||||
"from_time",
|
||||
"to_time"
|
||||
);
|
||||
CREATE INDEX `idx_language` ON `heartbeats`(`language`);
|
||||
DROP INDEX IF EXISTS "idx_language_mapping_composite";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "idx_language_mapping_composite" ON "language_mappings" (
|
||||
"user_id",
|
||||
"extension"
|
||||
);
|
||||
CREATE UNIQUE INDEX `idx_language_mapping_composite` ON `language_mappings`(`user_id`,`extension`);
|
||||
DROP INDEX IF EXISTS "idx_language_mapping_user";
|
||||
CREATE INDEX IF NOT EXISTS "idx_language_mapping_user" ON "language_mappings" (
|
||||
"user_id"
|
||||
);
|
||||
CREATE INDEX `idx_language_mapping_user` ON `language_mappings`(`user_id`);
|
||||
DROP INDEX IF EXISTS "idx_project_label_user";
|
||||
CREATE INDEX `idx_project_label_user` ON `project_labels`(`user_id`);
|
||||
DROP INDEX IF EXISTS "idx_time";
|
||||
CREATE INDEX `idx_time` ON `heartbeats`(`time`);
|
||||
DROP INDEX IF EXISTS "idx_time_summary_user";
|
||||
CREATE INDEX `idx_time_summary_user` ON `summaries`(`user_id`,`from_time`,`to_time`);
|
||||
DROP INDEX IF EXISTS "idx_time_user";
|
||||
CREATE INDEX `idx_time_user` ON `heartbeats`(`user_id`);
|
||||
DROP INDEX IF EXISTS "idx_type";
|
||||
CREATE INDEX `idx_type` ON `summary_items`(`type`);
|
||||
DROP INDEX IF EXISTS "idx_user_email";
|
||||
CREATE INDEX `idx_user_email` ON `users`(`email`);
|
||||
COMMIT;
|
||||
|
Loading…
Reference in New Issue
Block a user