From cf84578147d4f02fa90138d336bd2809a89b041a Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Thu, 22 Feb 2018 17:18:07 -0600 Subject: [PATCH 1/6] feat: create class TempTree to create tree data structure --- config/initializers/temp_tree.rb | 46 ++ lib/tasks/employer/blog.rake | 17 + spec/dummy/log/development.log | 697 +++++++++++++++++++++++++++++++ 3 files changed, 760 insertions(+) create mode 100644 config/initializers/temp_tree.rb create mode 100644 spec/dummy/log/development.log diff --git a/config/initializers/temp_tree.rb b/config/initializers/temp_tree.rb new file mode 100644 index 000000000..25b8ebfa6 --- /dev/null +++ b/config/initializers/temp_tree.rb @@ -0,0 +1,46 @@ +require 'securerandom' + +class TempTree + attr_accessor :target_node + attr_reader :head, :tree_fields + + def initialize + @head = Hashr.new children: [] + @tree_fields = {} + @target_node = @head + end + + def self.generate_id + SecureRandom.hex 6 + end + + def self.node value + Hashr.new name: value, value: value.downcase, children: [] + end + + def find_node node_value + target_node.children.each do |id| + if tree_fields[id].value == node_value || tree_fields[id].name == node_value + @target_node = tree_fields[id] + end + end + self + end + + def add_value value + field_id = TempTree.generate_id + tree_fields[field_id] = TempTree.node value + @target_node.children << field_id + @target_node = head + end + + def tree_data + { + head: head[:children], + tree_fields: tree_fields.keys.inject({}) do |lookup, field_key| + lookup[field_key] = tree_fields[field_key].to_h + lookup + end + } + end +end diff --git a/lib/tasks/employer/blog.rake b/lib/tasks/employer/blog.rake index 9192982dd..f5ed5442f 100644 --- a/lib/tasks/employer/blog.rake +++ b/lib/tasks/employer/blog.rake @@ -26,6 +26,23 @@ namespace :employer do tree end + def job_types + tree = TempTree.new + tree.add_value("Accountant") + tree.add_value("Human Resources") + tree.add_value("Software Engineer") + tree.find_node("Software Engineer").add_value('Database Admin') + tree.find_node("Software Engineer").add_value('Gaming') + tree.find_node("Software Engineer").add_value('Web') + tree.find_node("Software Engineer").find_node('Web').add_value("Front End") + tree.find_node("Software Engineer").find_node('Web').add_value("Back End") + tree.find_node("Software Engineer").find_node('Web').add_value("Fullstack") + + tree + end + + + def persona_tree tree = Tree.new tree.add_node({name: "General Audience"}) diff --git a/spec/dummy/log/development.log b/spec/dummy/log/development.log new file mode 100644 index 000000000..cd69c1657 --- /dev/null +++ b/spec/dummy/log/development.log @@ -0,0 +1,697 @@ +  (5.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (8.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] +  (0.3ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] +  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] + SQL (7.4ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" + SQL (0.5ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" +  (0.9ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE +  (70.4ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.7ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") +  (0.8ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") +  (1.0ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") +  (1.2ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") +  (0.9ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") +  (1.8ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE +  (3.1ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (0.8ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") +  (0.9ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE +  (2.5ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.3ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") +  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") +  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") +  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE +  (3.9ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (4.6ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") +  (2.2ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") +  (1.0ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE +  (3.1ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") +  (1.1ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") +  (1.1ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") +  (0.3ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE +  (3.0ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (0.9ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") +  (1.8ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") +  (0.9ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") +  (1.1ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE +  (1.6ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) +  (0.2ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE +  (2.7ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.5ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") +  (1.1ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") +  (1.3ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") +  (1.3ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") +  (1.0ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE +  (2.3ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (0.9ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") +  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE +  (2.5ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") +  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") +  (0.8ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") +  (0.1ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE +  (2.4ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") +  (0.9ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") +  (0.9ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") +  (1.0ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") +  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE +  (1.0ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) +  (0.9ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") +  (2.2ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE +  (4.1ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (2.5ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") +  (1.0ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE +  (1.0ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (0.9ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") +  (0.8ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE +  (3.0ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") +  (1.2ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") +  (0.9ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") +  (1.0ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") +  (0.9ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") +  (0.3ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE +  (0.9ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (1.4ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") +  (1.6ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_users" CASCADE +  (4.8ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) +  (1.5ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") +  (0.9ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") +  (1.1ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") +  (1.2ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") +  (28.1ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (8.6ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (7.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (1.3ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" +FOREIGN KEY ("updated_by_id") + REFERENCES "cortex_users" ("id") + +  (7.0ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" +FOREIGN KEY ("contract_id") + REFERENCES "cortex_contracts" ("id") + +  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.2ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (15.6ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" +FOREIGN KEY ("decorator_id") + REFERENCES "cortex_decorators" ("id") + +  (1.0ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (2.2ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.2ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (7.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" +FOREIGN KEY ("content_item_id") + REFERENCES "cortex_content_items" ("id") + +  (8.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" +FOREIGN KEY ("field_id") + REFERENCES "cortex_fields" ("id") + +  (1.2ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (15.0ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" +FOREIGN KEY ("permission_id") + REFERENCES "cortex_permissions" ("id") + +  (8.1ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (6.4ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (3.6ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" +FOREIGN KEY ("owner_id") + REFERENCES "cortex_users" ("id") + +  (4.1ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.2ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.2ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" +FOREIGN KEY ("active_tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.7ms) INSERT INTO "schema_migrations" (version) VALUES (20180118233014) +  (0.4ms) INSERT INTO "schema_migrations" (version) VALUES +(20180118233001), +(20180118233002), +(20180118233003), +(20180118233004), +(20180118233005), +(20180118233006), +(20180118233007), +(20180118233008), +(20180118233009), +(20180118233010), +(20180118233011), +(20180118233012), +(20180118233013); + + + ActiveRecord::InternalMetadata Load (1.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.8ms) BEGIN +  (0.2ms) COMMIT + ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.1ms) BEGIN +  (0.1ms) COMMIT +  (3.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (1.8ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] +  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] +  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] + SQL (0.2ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" + SQL (0.2ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" +  (9.8ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE +  (13.9ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") +  (1.1ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") +  (1.2ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") +  (1.1ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") +  (1.1ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") +  (1.2ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") +  (4.3ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE +  (3.2ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.5ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") +  (1.2ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") +  (1.1ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") +  (1.1ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") +  (1.3ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") +  (3.5ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE +  (6.1ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.7ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") +  (2.2ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") +  (1.4ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") +  (2.9ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE +  (3.0ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.3ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") +  (0.9ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") +  (3.9ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE +  (3.1ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") +  (1.6ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") +  (7.0ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE +  (4.2ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") +  (1.3ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") +  (1.1ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") +  (1.2ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") +  (2.4ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE +  (2.0ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) +  (3.4ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE +  (3.2ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.6ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") +  (1.2ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") +  (1.1ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") +  (1.2ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") +  (1.0ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") +  (5.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE +  (5.1ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") +  (10.4ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE +  (3.0ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") +  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") +  (1.1ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") +  (3.0ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE +  (5.2ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (0.9ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") +  (2.2ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") +  (1.5ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") +  (1.1ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") +  (1.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE +  (1.0ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") +  (1.0ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") +  (3.1ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE +  (2.9ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") +  (1.2ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") +  (1.1ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE +  (0.9ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") +  (1.5ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") +  (6.3ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE +  (3.1ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") +  (1.7ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") +  (1.2ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") +  (1.0ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") +  (0.9ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") +  (1.4ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE +  (1.1ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") +  (1.1ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") +  (5.7ms) DROP TABLE IF EXISTS "cortex_users" CASCADE +  (4.6ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) +  (1.0ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") +  (1.0ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") +  (1.7ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") +  (0.9ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") +  (21.7ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (8.6ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (10.1ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (1.7ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" +FOREIGN KEY ("updated_by_id") + REFERENCES "cortex_users" ("id") + +  (8.4ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" +FOREIGN KEY ("contract_id") + REFERENCES "cortex_contracts" ("id") + +  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (13.7ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" +FOREIGN KEY ("decorator_id") + REFERENCES "cortex_decorators" ("id") + +  (2.0ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (2.4ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.7ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (10.0ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" +FOREIGN KEY ("content_item_id") + REFERENCES "cortex_content_items" ("id") + +  (9.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" +FOREIGN KEY ("field_id") + REFERENCES "cortex_fields" ("id") + +  (1.3ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (12.9ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" +FOREIGN KEY ("permission_id") + REFERENCES "cortex_permissions" ("id") + +  (7.7ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (5.8ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (1.2ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" +FOREIGN KEY ("owner_id") + REFERENCES "cortex_users" ("id") + +  (4.0ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.5ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.2ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" +FOREIGN KEY ("active_tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (0.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC + ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.2ms) BEGIN +  (0.1ms) COMMIT + ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.1ms) BEGIN +  (0.1ms) COMMIT + SQL (0.4ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" + SQL (23.2ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" +  (0.2ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE +  (5.6ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.9ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") +  (1.0ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") +  (2.2ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") +  (1.4ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") +  (1.0ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") +  (2.6ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE +  (2.8ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") +  (1.1ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") +  (0.9ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") +  (1.1ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") +  (1.0ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE +  (2.5ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") +  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") +  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") +  (1.9ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") +  (0.3ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE +  (4.4ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") +  (1.8ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") +  (1.2ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE +  (2.9ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (0.9ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") +  (0.9ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") +  (1.2ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE +  (2.9ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (2.3ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") +  (1.4ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") +  (1.1ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") +  (1.0ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE +  (1.5ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) +  (0.2ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE +  (3.6ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") +  (0.9ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") +  (0.8ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") +  (1.2ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") +  (1.1ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE +  (3.0ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.3ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") +  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE +  (3.5ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.5ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") +  (1.3ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") +  (1.2ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") +  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE +  (3.9ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.1ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") +  (1.4ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") +  (1.2ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") +  (1.2ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") +  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE +  (0.9ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") +  (1.0ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE +  (2.8ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.9ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") +  (1.3ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") +  (1.1ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE +  (2.2ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") +  (1.4ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE +  (2.9ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) +  (1.0ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") +  (1.1ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") +  (1.1ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") +  (0.9ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") +  (1.1ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") +  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE +  (0.9ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) +  (1.2ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") +  (1.2ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") +  (0.3ms) DROP TABLE IF EXISTS "cortex_users" CASCADE +  (4.2ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) +  (1.3ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") +  (1.2ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") +  (1.5ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") +  (1.2ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") +  (22.2ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (10.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (7.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (1.2ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" +FOREIGN KEY ("updated_by_id") + REFERENCES "cortex_users" ("id") + +  (5.7ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" +FOREIGN KEY ("contract_id") + REFERENCES "cortex_contracts" ("id") + +  (1.2ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.1ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" +FOREIGN KEY ("creator_id") + REFERENCES "cortex_users" ("id") + +  (13.8ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" +FOREIGN KEY ("decorator_id") + REFERENCES "cortex_decorators" ("id") + +  (1.1ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (2.5ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.1ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (7.4ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" +FOREIGN KEY ("content_item_id") + REFERENCES "cortex_content_items" ("id") + +  (7.5ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" +FOREIGN KEY ("field_id") + REFERENCES "cortex_fields" ("id") + +  (1.6ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" +FOREIGN KEY ("content_type_id") + REFERENCES "cortex_content_types" ("id") + +  (8.9ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" +FOREIGN KEY ("permission_id") + REFERENCES "cortex_permissions" ("id") + +  (8.1ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (5.7ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" +FOREIGN KEY ("role_id") + REFERENCES "cortex_roles" ("id") + +  (1.1ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" +FOREIGN KEY ("owner_id") + REFERENCES "cortex_users" ("id") + +  (3.4ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" +FOREIGN KEY ("tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (1.1ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" +FOREIGN KEY ("user_id") + REFERENCES "cortex_users" ("id") + +  (1.1ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" +FOREIGN KEY ("active_tenant_id") + REFERENCES "cortex_tenants" ("id") + +  (2.3ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY) +  (1.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.5ms) INSERT INTO "schema_migrations" (version) VALUES (20180118233014) +  (0.6ms) INSERT INTO "schema_migrations" (version) VALUES +(20180118233001), +(20180118233002), +(20180118233003), +(20180118233004), +(20180118233005), +(20180118233006), +(20180118233007), +(20180118233008), +(20180118233009), +(20180118233010), +(20180118233011), +(20180118233012), +(20180118233013), +(0), +(10), +(11), +(12), +(13), +(1), +(2), +(3), +(4), +(5), +(6), +(7), +(8), +(9); + + +  (2.5ms) CREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) + ActiveRecord::InternalMetadata Load (1.9ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.2ms) BEGIN + SQL (1.4ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key" [["key", "environment"], ["value", "development"], ["created_at", "2018-02-21 20:24:35.335695"], ["updated_at", "2018-02-21 20:24:35.335695"]] +  (0.6ms) COMMIT + ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.1ms) BEGIN +  (0.2ms) COMMIT +  (0.2ms) SELECT pg_try_advisory_lock(2207846257810847325) +  (2.9ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC + ActiveRecord::InternalMetadata Load (1.9ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] +  (0.3ms) BEGIN +  (0.2ms) COMMIT +  (0.2ms) SELECT pg_advisory_unlock(2207846257810847325) +  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC +  (0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC + Cortex::Tenant Load (0.8ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."name" = $1 LIMIT $2 [["name", "System"], ["LIMIT", 1]] +  (0.1ms) BEGIN + Cortex::User Exists (2.2ms) SELECT 1 AS one FROM "cortex_users" WHERE "cortex_users"."email" = $1 AND "cortex_users"."deleted_at" IS NULL LIMIT $2 [["email", "admin@cortexcms.org"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "System"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "system"], ["LIMIT", 1]] + Cortex::User Exists (0.2ms) SELECT 1 AS one FROM "cortex_users" WHERE "cortex_users"."email" = $1 AND "cortex_users"."deleted_at" IS NULL LIMIT $2 [["email", "admin@cortexcms.org"], ["LIMIT", 1]] + SQL (1.8ms) INSERT INTO "cortex_users" ("email", "firstname", "lastname", "created_at", "updated_at", "encrypted_password") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["email", "admin@cortexcms.org"], ["firstname", "Cortex"], ["lastname", "Admin"], ["created_at", "2018-02-21 20:31:06.906447"], ["updated_at", "2018-02-21 20:31:06.906447"], ["encrypted_password", "$2a$10$AUX8X9yOt2awz2825OcnfubcnymQkSs64M5qapi.zkcm.sv6loMvG"]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] + Cortex::Tenant Load (0.1ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] + SQL (1.9ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["name", "System"], ["name_id", "system"], ["description", "Core tenant for news/etc"], ["lft", 1], ["rgt", 2], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.909608"], ["updated_at", "2018-02-21 20:31:06.909608"]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] + SQL (0.6ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '3bb36785-532a-4781-b2a4-835a8f93d19a' ORDER BY "cortex_tenants"."lft" ASC) +  (1.6ms) COMMIT +  (0.1ms) BEGIN + Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "Example"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "example"], ["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] + Cortex::Tenant Load (0.3ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] + SQL (0.3ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["name", "Example"], ["name_id", "example"], ["description", "ContentTypes to get started with"], ["lft", 3], ["rgt", 4], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.923633"], ["updated_at", "2018-02-21 20:31:06.923633"]] + Cortex::Tenant Load (0.3ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ORDER BY "cortex_tenants"."lft" ASC) +  (0.4ms) COMMIT +  (0.1ms) BEGIN + Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "Bogus"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "bogus"], ["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + SQL (0.3ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "parent_id", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["name", "Bogus"], ["name_id", "bogus"], ["description", "Example subtenant"], ["parent_id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["lft", 5], ["rgt", 6], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.931868"], ["updated_at", "2018-02-21 20:31:06.931868"]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 ORDER BY "cortex_tenants"."lft" ASC LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] + SQL (0.7ms) UPDATE "cortex_tenants" SET "lft" = CASE WHEN "lft" BETWEEN 4 AND 4 THEN "lft" + 6 - 4 WHEN "lft" BETWEEN 5 AND 6 THEN "lft" + 4 - 5 ELSE "lft" END, "rgt" = CASE WHEN "rgt" BETWEEN 4 AND 4 THEN "rgt" + 6 - 4 WHEN "rgt" BETWEEN 5 AND 6 THEN "rgt" + 4 - 5 ELSE "rgt" END, "parent_id" = CASE WHEN "id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' THEN '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ELSE "parent_id" END, updated_at = '2018-02-21 20:31:06.937061' WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE ("cortex_tenants"."lft" BETWEEN 4 AND 6 OR "cortex_tenants"."rgt" BETWEEN 4 AND 6) ORDER BY "cortex_tenants"."lft" ASC) + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] +  (0.4ms) SELECT COUNT(*) FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."lft" <= 4) AND ("cortex_tenants"."rgt" >= 5) AND ("cortex_tenants"."id" != '8c55071e-a911-4deb-bde8-597ab6bd9c6c') + SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = 1 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' ORDER BY "cortex_tenants"."lft" ASC) + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] +  (0.2ms) SELECT COUNT(*) FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."lft" <= 4) AND ("cortex_tenants"."rgt" >= 5) AND ("cortex_tenants"."id" != '8c55071e-a911-4deb-bde8-597ab6bd9c6c') + SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = 1 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' ORDER BY "cortex_tenants"."lft" ASC) +  (0.3ms) COMMIT +  (0.1ms) BEGIN + SQL (0.7ms) INSERT INTO "cortex_contracts" ("name", "tenant_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Bogus"], ["tenant_id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["created_at", "2018-02-21 20:31:06.948293"], ["updated_at", "2018-02-21 20:31:06.948293"]] +  (0.3ms) COMMIT + Cortex::Tenant Load (0.5ms) SELECT "cortex_tenants".* FROM "cortex_tenants" INNER JOIN "cortex_tenants_users" ON "cortex_tenants"."id" = "cortex_tenants_users"."tenant_id" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants_users"."user_id" = $1 [["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] +  (0.1ms) BEGIN + Cortex::User Load (0.2ms) SELECT "cortex_users".* FROM "cortex_users" WHERE "cortex_users"."deleted_at" IS NULL AND "cortex_users"."id" = $1 LIMIT $2 [["id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name", "System"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name_id", "system"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] + SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = $1, "updated_at" = $2 WHERE "cortex_tenants"."id" = $3 [["depth", 0], ["updated_at", "2018-02-21 20:31:07.003520"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] + SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '3bb36785-532a-4781-b2a4-835a8f93d19a' ORDER BY "cortex_tenants"."lft" ASC) + SQL (0.6ms) INSERT INTO "cortex_tenants_users" ("tenant_id", "user_id") VALUES ($1, $2) [["tenant_id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] + Cortex::User Load (0.2ms) SELECT "cortex_users".* FROM "cortex_users" WHERE "cortex_users"."deleted_at" IS NULL AND "cortex_users"."id" = $1 LIMIT $2 [["id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name", "Example"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name_id", "example"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + SQL (0.3ms) UPDATE "cortex_tenants" SET "depth" = $1, "updated_at" = $2 WHERE "cortex_tenants"."id" = $3 [["depth", 0], ["updated_at", "2018-02-21 20:31:07.017041"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"]] + Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] + SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ORDER BY "cortex_tenants"."lft" ASC) + SQL (0.3ms) INSERT INTO "cortex_tenants_users" ("tenant_id", "user_id") VALUES ($1, $2) [["tenant_id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] +  (0.3ms) COMMIT +  (0.1ms) BEGIN +  (0.1ms) COMMIT From a7064bf24842cc63da4b966632101e35e040e4f0 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Fri, 23 Feb 2018 12:55:03 -0600 Subject: [PATCH 2/6] refactor(lib/tasks/employer/blog.rake): update blog task to use new tree data structure --- .../{temp_tree.rb => tree_builder.rb} | 6 +- lib/tasks/employer/blog.rake | 59 +++++++++++-------- 2 files changed, 38 insertions(+), 27 deletions(-) rename config/initializers/{temp_tree.rb => tree_builder.rb} (88%) diff --git a/config/initializers/temp_tree.rb b/config/initializers/tree_builder.rb similarity index 88% rename from config/initializers/temp_tree.rb rename to config/initializers/tree_builder.rb index 25b8ebfa6..067a25dfa 100644 --- a/config/initializers/temp_tree.rb +++ b/config/initializers/tree_builder.rb @@ -1,6 +1,6 @@ require 'securerandom' -class TempTree +class TreeBuilder attr_accessor :target_node attr_reader :head, :tree_fields @@ -28,8 +28,8 @@ def find_node node_value end def add_value value - field_id = TempTree.generate_id - tree_fields[field_id] = TempTree.node value + field_id = TreeBuilder.generate_id + tree_fields[field_id] = TreeBuilder.node value @target_node.children << field_id @target_node = head end diff --git a/lib/tasks/employer/blog.rake b/lib/tasks/employer/blog.rake index f5ed5442f..9a1877d7b 100644 --- a/lib/tasks/employer/blog.rake +++ b/lib/tasks/employer/blog.rake @@ -7,29 +7,39 @@ namespace :employer do example_tenant = Tenant.find_by_name('Example') def research_tree - tree = Tree.new - tree.add_node({name: "CB Research"}) - tree.add_node({name: "Third Party Research"}) + tree = TreeBuilder.new + tree.add_value("CB Research") + tree.add_value("Third Party Research") - tree + tree.tree_data end def category_tree - tree = Tree.new - tree.add_node({ name: "Product News" }) - tree.add_node({ name: "Company News, Research and Trends" }) - tree.add_node({ name: "Client Success Stories" }) - tree.add_node({ name: "Recruiting Solutions" }) - tree.add_node({ name: "Employment Screening" }) - tree.add_node({ name: "Human Capital Management" }) + tree = TreeBuilder.new + tree.add_value("Product News") + tree.add_value("Company News, Research and Trends") + tree.add_value("Client Success Stories") + tree.add_value("Recruiting Solutions") + tree.add_value("Employment Screening") + tree.add_value("Human Capital Management") - tree + tree.tree_data end - def job_types - tree = TempTree.new - tree.add_value("Accountant") - tree.add_value("Human Resources") + def professions_tree + tree = TreeBuilder.new + tree.add_value('Finance') + tree.find_node('Finance').add_value("Accountant") + tree.find_node('Finance').add_value("Auditor") + tree.find_node('Finance').add_value("That Guy") + tree.add_value('Management') + tree.find_node('Management').add_value("Human Resources") + tree.find_node('Management').add_value("Product Owner") + tree.add_value("Nurse") + tree.add_value("Doctor") + tree.find_node("Doctor").add_value('Oncologist') + tree.find_node("Doctor").add_value('Love') + tree.find_node("Doctor").add_value('Pepper') tree.add_value("Software Engineer") tree.find_node("Software Engineer").add_value('Database Admin') tree.find_node("Software Engineer").add_value('Gaming') @@ -38,20 +48,20 @@ namespace :employer do tree.find_node("Software Engineer").find_node('Web').add_value("Back End") tree.find_node("Software Engineer").find_node('Web').add_value("Fullstack") - tree + tree.tree_data end def persona_tree - tree = Tree.new - tree.add_node({name: "General Audience"}) - tree.add_node({name: "Recruiters"}) - tree.add_node({name: "Sourcers"}) - tree.add_node({name: "Managers/Directors"}) - tree.add_node({name: "C-Level"}) + tree = TreeBuilder.new + tree.add_value("General Audience") + tree.add_value("Recruiters") + tree.add_value("Sourcers") + tree.add_value("Managers/Directors") + tree.add_value("C-Level") - tree + tree.tree_data end puts "Creating Employer Blog ContentType..." @@ -88,6 +98,7 @@ namespace :employer do blog.fields.new(name: 'Categories', name_id: 'categories', field_type: 'tree_field_type', metadata: {allowed_values: category_tree}, validations: {maximum: 2, minimum: 1}) blog.fields.new(name: 'Research', name_id: 'research', field_type: 'tree_field_type', metadata: {allowed_values: research_tree}, validations: {minimum: 1}) blog.fields.new(name: 'Persona', name_id: 'persona', field_type: 'tree_field_type', metadata: {allowed_values: persona_tree}) + blog.fields.new(name: 'Profession', name_id: 'profession', field_type: 'tree_field_type', metadata: {allowed_values: professions_tree}) blog.fields.new(name: 'Featured Image', name_id: 'featured_image', field_type: 'content_item_field_type', metadata: { field_name: 'Asset' From b52250dd9758fe405f26edf8eaf67c6f2116d44c Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 16:40:32 -0600 Subject: [PATCH 3/6] feat: create class for indenting nested tree fields --- Gemfile | 2 +- Gemfile.lock | 54 +++++++++++---------- app/assets/stylesheets/components/form.scss | 4 ++ app/models/field_item.rb | 1 + config/initializers/tree_builder.rb | 13 +++-- lib/tasks/employer/blog.rake | 47 ++++++++++++++++-- 6 files changed, 87 insertions(+), 34 deletions(-) diff --git a/Gemfile b/Gemfile index 4f9c7b50a..a53d06ae7 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ gem 'apollo-tracing', '~> 1.3.0' # Cortex-specific gem 'cortex-exceptions', '= 0.0.4' -gem 'cortex-plugins-core', '= 2.1.1' +gem 'cortex-plugins-core', path: '/Users/phalloran/cortex-plugins-core' #'= 2.1.1' # Service Layer gem 'dry-types', '~> 0.12.2' diff --git a/Gemfile.lock b/Gemfile.lock index 7394e47c2..b0180693c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,3 +1,21 @@ +PATH + remote: ../cortex-plugins-core + specs: + cortex-plugins-core (2.1.1) + aws-sdk-s3 (~> 1.5) + cells (~> 4.1) + cells-haml (~> 0.0) + cells-rails (~> 0.0) + fastimage (~> 2.1) + image_optim (~> 0.25) + image_optim_pack (~> 0.5) + image_processing (~> 0.4) + jsonb_accessor (~> 1.0) + mimemagic (~> 0.3) + mini_magick (~> 4.8) + rails (>= 5) + shrine (~> 2.7) + GEM remote: https://rubygems.org/ specs: @@ -48,15 +66,15 @@ GEM execjs awesome_nested_set (3.1.3) activerecord (>= 4.0.0, < 5.2) - aws-partitions (1.35.0) - aws-sdk-core (3.7.0) + aws-partitions (1.67.0) + aws-sdk-core (3.16.0) aws-partitions (~> 1.0) aws-sigv4 (~> 1.0) jmespath (~> 1.0) - aws-sdk-kms (1.3.0) + aws-sdk-kms (1.5.0) aws-sdk-core (~> 3) aws-sigv4 (~> 1.0) - aws-sdk-s3 (1.6.0) + aws-sdk-s3 (1.8.2) aws-sdk-core (~> 3) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.0) @@ -105,20 +123,6 @@ GEM concurrent-ruby (1.0.5) connection_pool (2.2.1) cortex-exceptions (0.0.4) - cortex-plugins-core (2.1.1) - aws-sdk-s3 (~> 1.5) - cells (~> 4.1) - cells-haml (~> 0.0) - cells-rails (~> 0.0) - fastimage (~> 2.1) - image_optim (~> 0.25) - image_optim_pack (~> 0.5) - image_processing (~> 0.4) - jsonb_accessor (~> 1.0) - mimemagic (~> 0.3) - mini_magick (~> 4.8) - rails (>= 5) - shrine (~> 2.7) crass (1.0.3) database_cleaner (1.6.2) debug_inspector (0.0.3) @@ -138,7 +142,7 @@ GEM dotenv-rails (2.2.1) dotenv (= 2.2.1) railties (>= 3.2, < 5.2) - down (4.1.1) + down (4.2.1) dry-configurable (0.7.0) concurrent-ruby (~> 1.0) dry-container (0.6.0) @@ -200,7 +204,7 @@ GEM erubi (1.7.0) erubis (2.7.0) execjs (2.7.0) - exifr (1.3.2) + exifr (1.3.3) factory_girl (4.9.0) activesupport (>= 3.0.0) factory_girl_rails (4.9.0) @@ -210,7 +214,7 @@ GEM i18n (~> 0.5) faraday (0.13.1) multipart-post (>= 1.2, < 3) - fastimage (2.1.0) + fastimage (2.1.1) ffi (1.9.18) flipper (0.11.0) flipper-active_record (0.11.0) @@ -265,13 +269,13 @@ GEM i18n (0.9.1) concurrent-ruby (~> 1.0) ice_nine (0.11.2) - image_optim (0.26.0) + image_optim (0.26.1) exifr (~> 1.2, >= 1.2.2) fspath (~> 3.0) image_size (~> 1.5) in_threads (~> 1.3) progress (~> 3.0, >= 3.0.1) - image_optim_pack (0.5.0.20171101) + image_optim_pack (0.5.0.20180124) fspath (>= 2.1, < 4) image_optim (~> 0.19) image_processing (0.4.5) @@ -502,7 +506,7 @@ GEM shellany (0.0.1) shoulda-matchers (3.1.2) activesupport (>= 4.0.0) - shrine (2.8.0) + shrine (2.9.0) down (~> 4.1) sidekiq (5.0.5) concurrent-ruby (~> 1.0) @@ -574,7 +578,7 @@ DEPENDENCIES cells-rails (~> 0.0.8) codeclimate-test-reporter cortex-exceptions (= 0.0.4) - cortex-plugins-core (= 2.1.1) + cortex-plugins-core! database_cleaner devise (~> 4.3.0) dialog-polyfill-rails (~> 0.4.5) diff --git a/app/assets/stylesheets/components/form.scss b/app/assets/stylesheets/components/form.scss index 011f8d9e5..9648a8bf6 100644 --- a/app/assets/stylesheets/components/form.scss +++ b/app/assets/stylesheets/components/form.scss @@ -43,3 +43,7 @@ form { color: $color-grey; font-size: $base-font-size * 1.25; } + +.nested-checkbox-group { + padding-left: 30px; +} diff --git a/app/models/field_item.rb b/app/models/field_item.rb index 13ab49a98..7db54dbbf 100644 --- a/app/models/field_item.rb +++ b/app/models/field_item.rb @@ -19,6 +19,7 @@ def tenant def field_type_instance_params(data_hash) # Carefully construct a params object so we don't trigger our fragile setters when a value is nil + params = {metadata: field.metadata.merge({existing_data: data}), field: field, validations: field.validations} params[:data] = data_hash if data_hash params diff --git a/config/initializers/tree_builder.rb b/config/initializers/tree_builder.rb index 067a25dfa..bf4b7bde5 100644 --- a/config/initializers/tree_builder.rb +++ b/config/initializers/tree_builder.rb @@ -34,13 +34,18 @@ def add_value value @target_node = head end + def tree_fields_hash + @tree_fields_hash ||= tree_fields.keys.inject({}) do |lookup, field_key| + lookup[field_key] = tree_fields[field_key].to_h + lookup + end + end + def tree_data { head: head[:children], - tree_fields: tree_fields.keys.inject({}) do |lookup, field_key| - lookup[field_key] = tree_fields[field_key].to_h - lookup - end + tree_fields: tree_fields_hash, + data: tree_fields_hash } end end diff --git a/lib/tasks/employer/blog.rake b/lib/tasks/employer/blog.rake index 9a1877d7b..8293a7f1e 100644 --- a/lib/tasks/employer/blog.rake +++ b/lib/tasks/employer/blog.rake @@ -51,6 +51,33 @@ namespace :employer do tree.tree_data end + def industries_tree + tree = TreeBuilder.new + tree.add_value('General') + tree.add_value('All') + tree.find_node('All').add_value('Finance') + tree.find_node('All').find_node('Finance').add_value("Accounting") + tree.find_node('All').find_node('Finance').add_value("Auditing") + tree.find_node('All').find_node('Finance').add_value("Trading") + tree.find_node('All').add_value('Medical') + tree.find_node('All').find_node('Medical').add_value("Nursing") + tree.find_node('All').find_node('Medical').add_value("Surgery") + tree.find_node('All').find_node('Medical').add_value("Phramacy") + tree.find_node('All').add_value('Management') + tree.find_node('All').find_node('Management').add_value("Human Resources") + tree.find_node('All').find_node('Management').add_value("Product Owner") + tree.find_node('All').add_value('Manufacturing') + tree.find_node('All').add_value('Technology') + tree.find_node('All').find_node('Technology').add_value('Web and Applications') + tree.find_node('All').find_node('Technology').add_value('Video Games') + tree.find_node('All').add_value('Education') + tree.find_node('All').find_node('Education').add_value('K-12') + tree.find_node('All').find_node('Education').add_value('Collegiate') + tree.find_node('All').add_value('Entertainment') + + tree.tree_data + end + def persona_tree @@ -95,10 +122,11 @@ namespace :employer do blog.fields.new(name: 'No ODP', name_id: 'no_odp', field_type: 'boolean_field_type') blog.fields.new(name: 'No Archive', name_id: 'no_archive', field_type: 'boolean_field_type') blog.fields.new(name: 'No Image Index', name_id: 'no_image_index', field_type: 'boolean_field_type') - blog.fields.new(name: 'Categories', name_id: 'categories', field_type: 'tree_field_type', metadata: {allowed_values: category_tree}, validations: {maximum: 2, minimum: 1}) - blog.fields.new(name: 'Research', name_id: 'research', field_type: 'tree_field_type', metadata: {allowed_values: research_tree}, validations: {minimum: 1}) + blog.fields.new(name: 'Categories', name_id: 'categories', field_type: 'tree_field_type', metadata: {allowed_values: category_tree}) + blog.fields.new(name: 'Research', name_id: 'research', field_type: 'tree_field_type', metadata: {allowed_values: research_tree}) blog.fields.new(name: 'Persona', name_id: 'persona', field_type: 'tree_field_type', metadata: {allowed_values: persona_tree}) - blog.fields.new(name: 'Profession', name_id: 'profession', field_type: 'tree_field_type', metadata: {allowed_values: professions_tree}) + blog.fields.new(name: 'Profession', name_id: 'profession', field_type: 'tree_field_type', metadata: {allowed_values: professions_tree}, validations: {minimum: 1}) + blog.fields.new(name: 'Industries', name_id: 'industries', field_type: 'tree_field_type', metadata: {allowed_values: industries_tree}) blog.fields.new(name: 'Featured Image', name_id: 'featured_image', field_type: 'content_item_field_type', metadata: { field_name: 'Asset' @@ -198,7 +226,18 @@ namespace :employer do ] }, { + "heading": "Industries (Optional Heading)", "grid_width": 4, + "elements": [ + { + "id": blog.fields.find_by_name('Industries').id, + "render_method": "checkboxes", + "tooltip": "Please select related Industries." + } + ] + }, + { + "grid_width": 2, "elements": [ { "id": blog.fields.find_by_name('Persona').id, @@ -208,7 +247,7 @@ namespace :employer do ] }, { - "grid_width": 4, + "grid_width": 2, "elements": [ { "id": blog.fields.find_by_name('Research').id, From 0e643bb26ed04325ed658df5c76c5176da0d78bc Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Tue, 27 Feb 2018 16:45:50 -0600 Subject: [PATCH 4/6] chore: change gemfile to use git branch for plugins --- Gemfile | 2 +- Gemfile.lock | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index a53d06ae7..23af24257 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ gem 'apollo-tracing', '~> 1.3.0' # Cortex-specific gem 'cortex-exceptions', '= 0.0.4' -gem 'cortex-plugins-core', path: '/Users/phalloran/cortex-plugins-core' #'= 2.1.1' +gem 'cortex-plugins-core', git: 'https://github.com/cortex-cms/cortex-plugins-core.git' , branch: 'CE-738/Refactor-Tree-Field-Type' #'= 2.1.1' # Service Layer gem 'dry-types', '~> 0.12.2' diff --git a/Gemfile.lock b/Gemfile.lock index b0180693c..ccceb6a21 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,5 +1,7 @@ -PATH - remote: ../cortex-plugins-core +GIT + remote: https://github.com/cortex-cms/cortex-plugins-core.git + revision: 49fc7a52da4b964fa4c6e400105b2a20980fff70 + branch: CE-738/Refactor-Tree-Field-Type specs: cortex-plugins-core (2.1.1) aws-sdk-s3 (~> 1.5) @@ -67,7 +69,7 @@ GEM awesome_nested_set (3.1.3) activerecord (>= 4.0.0, < 5.2) aws-partitions (1.67.0) - aws-sdk-core (3.16.0) + aws-sdk-core (3.17.0) aws-partitions (~> 1.0) aws-sigv4 (~> 1.0) jmespath (~> 1.0) From 1a92b8cc3e42bece4d3cb9c33bd09f1f3a6ca63f Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Wed, 28 Feb 2018 11:58:57 -0600 Subject: [PATCH 5/6] example: create JS event for example --- Gemfile | 1 + Gemfile.lock | 2 +- app/assets/javascripts/application.js | 1 + app/assets/javascripts/example_tree_select.js | 12 ++++++++++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/example_tree_select.js diff --git a/Gemfile b/Gemfile index 23af24257..57928e172 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,7 @@ gem 'apollo-tracing', '~> 1.3.0' # Cortex-specific gem 'cortex-exceptions', '= 0.0.4' + gem 'cortex-plugins-core', git: 'https://github.com/cortex-cms/cortex-plugins-core.git' , branch: 'CE-738/Refactor-Tree-Field-Type' #'= 2.1.1' # Service Layer diff --git a/Gemfile.lock b/Gemfile.lock index ccceb6a21..8509d90e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/cortex-cms/cortex-plugins-core.git - revision: 49fc7a52da4b964fa4c6e400105b2a20980fff70 + revision: c793b4c25bff15e53e7f4594826dc4514b6fe262 branch: CE-738/Refactor-Tree-Field-Type specs: cortex-plugins-core (2.1.1) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 1417c494e..8277d49fc 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -18,5 +18,6 @@ //= require flash //= require media_dialogs //= require quick_links +//= require example_tree_select // require turbolinks # temporarily disabled diff --git a/app/assets/javascripts/example_tree_select.js b/app/assets/javascripts/example_tree_select.js new file mode 100644 index 000000000..e2f020a0c --- /dev/null +++ b/app/assets/javascripts/example_tree_select.js @@ -0,0 +1,12 @@ + +function TreeBranchClicked(nested_id, target) { + var checked = $(target).find('input[type="checkbox"]')[0].checked; + + $(nested_id).find('input[type="checkbox"]').prop('checked', checked) + + if (checked === true) { + $(nested_id).find('label').addClass('is-checked'); + } else { + $(nested_id).find('label').removeClass('is-checked'); + } +} From a9836f486b89ef190983dbc2bb3d441dc246b552 Mon Sep 17 00:00:00 2001 From: Peter Halloran Date: Wed, 28 Feb 2018 12:22:30 -0600 Subject: [PATCH 6/6] chore(Gemfile): remove pomona --- Gemfile | 1 - Gemfile.lock | 2 - app/models/field_item.rb | 1 - spec/dummy/log/development.log | 697 --------------------------------- 4 files changed, 701 deletions(-) delete mode 100644 spec/dummy/log/development.log diff --git a/Gemfile b/Gemfile index 57928e172..938999574 100644 --- a/Gemfile +++ b/Gemfile @@ -44,7 +44,6 @@ gem 'elasticsearch-dsl', '~> 0.1' gem 'paranoia', '~> 2.4' gem 'pg', '~> 0.21.0' gem 'redis-rails', '~> 5.0' -gem 'pomona', '~> 0.7' gem 'transitions', '~> 1.2', require: %w(transitions active_model/transitions) # Middleware diff --git a/Gemfile.lock b/Gemfile.lock index 8509d90e7..69fa81881 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -373,7 +373,6 @@ GEM capybara (~> 2.1) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) - pomona (0.7.0) progress (3.4.0) pry (0.10.4) coderay (~> 1.1.0) @@ -626,7 +625,6 @@ DEPENDENCIES pg (~> 0.21.0) phantomjs (~> 2.1) poltergeist - pomona (~> 0.7) pry-nav pry-rails pry-remote diff --git a/app/models/field_item.rb b/app/models/field_item.rb index 7db54dbbf..13ab49a98 100644 --- a/app/models/field_item.rb +++ b/app/models/field_item.rb @@ -19,7 +19,6 @@ def tenant def field_type_instance_params(data_hash) # Carefully construct a params object so we don't trigger our fragile setters when a value is nil - params = {metadata: field.metadata.merge({existing_data: data}), field: field, validations: field.validations} params[:data] = data_hash if data_hash params diff --git a/spec/dummy/log/development.log b/spec/dummy/log/development.log deleted file mode 100644 index cd69c1657..000000000 --- a/spec/dummy/log/development.log +++ /dev/null @@ -1,697 +0,0 @@ -  (5.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (8.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] -  (0.3ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] -  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] - SQL (7.4ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" - SQL (0.5ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" -  (0.9ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE -  (70.4ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.7ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") -  (0.8ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") -  (1.0ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") -  (1.2ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") -  (0.9ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") -  (1.8ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE -  (3.1ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (0.8ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") -  (0.9ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE -  (2.5ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.3ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") -  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") -  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") -  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE -  (3.9ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (4.6ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") -  (2.2ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") -  (1.0ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE -  (3.1ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") -  (1.1ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") -  (1.1ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") -  (0.3ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE -  (3.0ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (0.9ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") -  (1.8ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") -  (0.9ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") -  (1.1ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE -  (1.6ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) -  (0.2ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE -  (2.7ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.5ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") -  (1.1ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") -  (1.3ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") -  (1.3ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") -  (1.0ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE -  (2.3ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (0.9ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") -  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE -  (2.5ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") -  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") -  (0.8ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") -  (0.1ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE -  (2.4ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") -  (0.9ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") -  (0.9ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") -  (1.0ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") -  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE -  (1.0ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) -  (0.9ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") -  (2.2ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE -  (4.1ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (2.5ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") -  (1.0ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE -  (1.0ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (0.9ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") -  (0.8ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE -  (3.0ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") -  (1.2ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") -  (0.9ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") -  (1.0ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") -  (0.9ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") -  (0.3ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE -  (0.9ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (1.4ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") -  (1.6ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_users" CASCADE -  (4.8ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) -  (1.5ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") -  (0.9ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") -  (1.1ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") -  (1.2ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") -  (28.1ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (8.6ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (7.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (1.3ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" -FOREIGN KEY ("updated_by_id") - REFERENCES "cortex_users" ("id") - -  (7.0ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" -FOREIGN KEY ("contract_id") - REFERENCES "cortex_contracts" ("id") - -  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.2ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (15.6ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" -FOREIGN KEY ("decorator_id") - REFERENCES "cortex_decorators" ("id") - -  (1.0ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (2.2ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.2ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (7.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" -FOREIGN KEY ("content_item_id") - REFERENCES "cortex_content_items" ("id") - -  (8.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" -FOREIGN KEY ("field_id") - REFERENCES "cortex_fields" ("id") - -  (1.2ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (15.0ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" -FOREIGN KEY ("permission_id") - REFERENCES "cortex_permissions" ("id") - -  (8.1ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (6.4ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (3.6ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" -FOREIGN KEY ("owner_id") - REFERENCES "cortex_users" ("id") - -  (4.1ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.2ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.2ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" -FOREIGN KEY ("active_tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.7ms) INSERT INTO "schema_migrations" (version) VALUES (20180118233014) -  (0.4ms) INSERT INTO "schema_migrations" (version) VALUES -(20180118233001), -(20180118233002), -(20180118233003), -(20180118233004), -(20180118233005), -(20180118233006), -(20180118233007), -(20180118233008), -(20180118233009), -(20180118233010), -(20180118233011), -(20180118233012), -(20180118233013); - - - ActiveRecord::InternalMetadata Load (1.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.8ms) BEGIN -  (0.2ms) COMMIT - ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.1ms) BEGIN -  (0.1ms) COMMIT -  (3.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (1.8ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] -  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] -  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.1ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 [["key", "environment"]] - SQL (0.2ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" - SQL (0.2ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" -  (9.8ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE -  (13.9ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") -  (1.1ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") -  (1.2ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") -  (1.1ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") -  (1.1ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") -  (1.2ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") -  (4.3ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE -  (3.2ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.5ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") -  (1.2ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") -  (1.1ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") -  (1.1ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") -  (1.3ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") -  (3.5ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE -  (6.1ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.7ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") -  (2.2ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") -  (1.4ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") -  (2.9ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE -  (3.0ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.3ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") -  (0.9ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") -  (3.9ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE -  (3.1ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") -  (1.6ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") -  (7.0ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE -  (4.2ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") -  (1.3ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") -  (1.1ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") -  (1.2ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") -  (2.4ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE -  (2.0ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) -  (3.4ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE -  (3.2ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.6ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") -  (1.2ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") -  (1.1ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") -  (1.2ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") -  (1.0ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") -  (5.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE -  (5.1ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") -  (10.4ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE -  (3.0ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") -  (1.0ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") -  (1.1ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") -  (3.0ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE -  (5.2ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (0.9ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") -  (2.2ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") -  (1.5ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") -  (1.1ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") -  (1.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE -  (1.0ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") -  (1.0ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") -  (3.1ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE -  (2.9ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") -  (1.2ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") -  (1.1ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE -  (0.9ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") -  (1.5ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") -  (6.3ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE -  (3.1ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") -  (1.7ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") -  (1.2ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") -  (1.0ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") -  (0.9ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") -  (1.4ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE -  (1.1ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") -  (1.1ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") -  (5.7ms) DROP TABLE IF EXISTS "cortex_users" CASCADE -  (4.6ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) -  (1.0ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") -  (1.0ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") -  (1.7ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") -  (0.9ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") -  (21.7ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (8.6ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (10.1ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (1.7ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" -FOREIGN KEY ("updated_by_id") - REFERENCES "cortex_users" ("id") - -  (8.4ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" -FOREIGN KEY ("contract_id") - REFERENCES "cortex_contracts" ("id") - -  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.3ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (13.7ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" -FOREIGN KEY ("decorator_id") - REFERENCES "cortex_decorators" ("id") - -  (2.0ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (2.4ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.7ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (10.0ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" -FOREIGN KEY ("content_item_id") - REFERENCES "cortex_content_items" ("id") - -  (9.9ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" -FOREIGN KEY ("field_id") - REFERENCES "cortex_fields" ("id") - -  (1.3ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (12.9ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" -FOREIGN KEY ("permission_id") - REFERENCES "cortex_permissions" ("id") - -  (7.7ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (5.8ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (1.2ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" -FOREIGN KEY ("owner_id") - REFERENCES "cortex_users" ("id") - -  (4.0ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.5ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.2ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" -FOREIGN KEY ("active_tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (0.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC - ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.2ms) BEGIN -  (0.1ms) COMMIT - ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.1ms) BEGIN -  (0.1ms) COMMIT - SQL (0.4ms) CREATE EXTENSION IF NOT EXISTS "plpgsql" - SQL (23.2ms) CREATE EXTENSION IF NOT EXISTS "pgcrypto" -  (0.2ms) DROP TABLE IF EXISTS "cortex_content_items" CASCADE -  (5.6ms) CREATE TABLE "cortex_content_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "state" character varying, "content_type_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "creator_id" uuid NOT NULL, "updated_by_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.9ms) CREATE INDEX "index_cortex_content_items_on_content_type_id" ON "cortex_content_items" ("content_type_id") -  (1.0ms) CREATE INDEX "index_cortex_content_items_on_creator_id" ON "cortex_content_items" ("creator_id") -  (2.2ms) CREATE INDEX "index_cortex_content_items_on_deleted_at" ON "cortex_content_items" ("deleted_at") -  (1.4ms) CREATE INDEX "index_cortex_content_items_on_state" ON "cortex_content_items" ("state") -  (1.0ms) CREATE INDEX "index_cortex_content_items_on_tenant_id" ON "cortex_content_items" ("tenant_id") -  (2.6ms) CREATE INDEX "index_cortex_content_items_on_updated_by_id" ON "cortex_content_items" ("updated_by_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_content_types" CASCADE -  (2.8ms) CREATE TABLE "cortex_content_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "description" text, "creator_id" uuid NOT NULL, "tenant_id" uuid NOT NULL, "contract_id" uuid NOT NULL, "publishable" boolean DEFAULT 'f' NOT NULL, "icon" character varying DEFAULT 'help', "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_contract_id" ON "cortex_content_types" ("contract_id") -  (1.1ms) CREATE INDEX "index_cortex_content_types_on_creator_id" ON "cortex_content_types" ("creator_id") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_deleted_at" ON "cortex_content_types" ("deleted_at") -  (0.9ms) CREATE INDEX "index_cortex_content_types_on_name" ON "cortex_content_types" ("name") -  (1.1ms) CREATE INDEX "index_cortex_content_types_on_name_id" ON "cortex_content_types" ("name_id") -  (1.0ms) CREATE INDEX "index_cortex_content_types_on_tenant_id" ON "cortex_content_types" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_contentable_decorators" CASCADE -  (2.5ms) CREATE TABLE "cortex_contentable_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "decorator_id" uuid, "contentable_type" character varying, "contentable_id" uuid, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_contentable" ON "cortex_contentable_decorators" ("contentable_type", "contentable_id") -  (1.1ms) CREATE INDEX "index_cortex_contentable_decorators_on_decorator_id" ON "cortex_contentable_decorators" ("decorator_id") -  (1.0ms) CREATE INDEX "index_cortex_contentable_decorators_on_deleted_at" ON "cortex_contentable_decorators" ("deleted_at") -  (1.9ms) CREATE INDEX "index_cortex_contentable_decorators_on_tenant_id" ON "cortex_contentable_decorators" ("tenant_id") -  (0.3ms) DROP TABLE IF EXISTS "cortex_contracts" CASCADE -  (4.4ms) CREATE TABLE "cortex_contracts" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_contracts_on_deleted_at" ON "cortex_contracts" ("deleted_at") -  (1.8ms) CREATE INDEX "index_cortex_contracts_on_name" ON "cortex_contracts" ("name") -  (1.2ms) CREATE INDEX "index_cortex_contracts_on_tenant_id" ON "cortex_contracts" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_decorators" CASCADE -  (2.9ms) CREATE TABLE "cortex_decorators" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "data" jsonb DEFAULT '{}' NOT NULL, "tenant_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (0.9ms) CREATE INDEX "index_cortex_decorators_on_deleted_at" ON "cortex_decorators" ("deleted_at") -  (0.9ms) CREATE INDEX "index_cortex_decorators_on_name" ON "cortex_decorators" ("name") -  (1.2ms) CREATE INDEX "index_cortex_decorators_on_tenant_id" ON "cortex_decorators" ("tenant_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_field_items" CASCADE -  (2.9ms) CREATE TABLE "cortex_field_items" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "data" jsonb DEFAULT '{}' NOT NULL, "field_id" uuid NOT NULL, "content_item_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (2.3ms) CREATE INDEX "index_cortex_field_items_on_content_item_id" ON "cortex_field_items" ("content_item_id") -  (1.4ms) CREATE INDEX "index_cortex_field_items_on_data" ON "cortex_field_items" USING gin ("data") -  (1.1ms) CREATE INDEX "index_cortex_field_items_on_deleted_at" ON "cortex_field_items" ("deleted_at") -  (1.0ms) CREATE INDEX "index_cortex_field_items_on_field_id" ON "cortex_field_items" ("field_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_field_types" CASCADE -  (1.5ms) CREATE TABLE "cortex_field_types" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY) -  (0.2ms) DROP TABLE IF EXISTS "cortex_fields" CASCADE -  (3.6ms) CREATE TABLE "cortex_fields" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying NOT NULL, "name_id" character varying NOT NULL, "field_type" character varying NOT NULL, "metadata" jsonb DEFAULT '{}' NOT NULL, "validations" jsonb DEFAULT '{}' NOT NULL, "content_type_id" uuid NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_fields_on_content_type_id" ON "cortex_fields" ("content_type_id") -  (0.9ms) CREATE INDEX "index_cortex_fields_on_deleted_at" ON "cortex_fields" ("deleted_at") -  (0.8ms) CREATE INDEX "index_cortex_fields_on_field_type" ON "cortex_fields" ("field_type") -  (1.2ms) CREATE INDEX "index_cortex_fields_on_name" ON "cortex_fields" ("name") -  (1.1ms) CREATE INDEX "index_cortex_fields_on_name_id" ON "cortex_fields" ("name_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_features" CASCADE -  (3.0ms) CREATE TABLE "cortex_flipper_features" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "key" character varying NOT NULL, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.3ms) CREATE UNIQUE INDEX "index_cortex_flipper_features_on_key" ON "cortex_flipper_features" ("key") -  (0.2ms) DROP TABLE IF EXISTS "cortex_flipper_gates" CASCADE -  (3.5ms) CREATE TABLE "cortex_flipper_gates" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "feature_key" character varying NOT NULL, "key" character varying NOT NULL, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.5ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_feature_key" ON "cortex_flipper_gates" ("feature_key") -  (1.3ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_key" ON "cortex_flipper_gates" ("key") -  (1.2ms) CREATE UNIQUE INDEX "index_cortex_flipper_gates_on_value" ON "cortex_flipper_gates" ("value") -  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions" CASCADE -  (3.9ms) CREATE TABLE "cortex_permissions" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.1ms) CREATE INDEX "index_cortex_permissions_on_deleted_at" ON "cortex_permissions" ("deleted_at") -  (1.4ms) CREATE INDEX "index_cortex_permissions_on_name" ON "cortex_permissions" ("name") -  (1.2ms) CREATE INDEX "index_cortex_permissions_on_resource_id" ON "cortex_permissions" ("resource_id") -  (1.2ms) CREATE INDEX "index_cortex_permissions_on_resource_type" ON "cortex_permissions" ("resource_type") -  (0.2ms) DROP TABLE IF EXISTS "cortex_permissions_roles" CASCADE -  (0.9ms) CREATE TABLE "cortex_permissions_roles" ("permission_id" uuid NOT NULL, "role_id" uuid NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_permissions_roles_on_permission_id" ON "cortex_permissions_roles" ("permission_id") -  (1.0ms) CREATE INDEX "index_cortex_permissions_roles_on_role_id" ON "cortex_permissions_roles" ("role_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_roles" CASCADE -  (2.8ms) CREATE TABLE "cortex_roles" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying, "resource_type" character varying, "resource_id" uuid, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.9ms) CREATE INDEX "index_cortex_roles_on_deleted_at" ON "cortex_roles" ("deleted_at") -  (1.3ms) CREATE INDEX "index_cortex_roles_on_name" ON "cortex_roles" ("name") -  (1.1ms) CREATE INDEX "index_cortex_roles_on_resource_type_and_resource_id" ON "cortex_roles" ("resource_type", "resource_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_roles_users" CASCADE -  (2.2ms) CREATE TABLE "cortex_roles_users" ("role_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_roles_users_on_role_id" ON "cortex_roles_users" ("role_id") -  (1.4ms) CREATE INDEX "index_cortex_roles_users_on_user_id" ON "cortex_roles_users" ("user_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants" CASCADE -  (2.9ms) CREATE TABLE "cortex_tenants" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "name" character varying(50) NOT NULL, "name_id" character varying NOT NULL, "description" text, "parent_id" uuid, "lft" integer, "rgt" integer, "depth" integer, "deleted_at" timestamp, "active_at" timestamp, "deactive_at" timestamp, "owner_id" uuid, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) -  (1.0ms) CREATE INDEX "index_cortex_tenants_on_deleted_at" ON "cortex_tenants" ("deleted_at") -  (1.1ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name" ON "cortex_tenants" ("name") -  (1.1ms) CREATE UNIQUE INDEX "index_cortex_tenants_on_name_id" ON "cortex_tenants" ("name_id") -  (0.9ms) CREATE INDEX "index_cortex_tenants_on_owner_id" ON "cortex_tenants" ("owner_id") -  (1.1ms) CREATE INDEX "index_cortex_tenants_on_parent_id" ON "cortex_tenants" ("parent_id") -  (0.2ms) DROP TABLE IF EXISTS "cortex_tenants_users" CASCADE -  (0.9ms) CREATE TABLE "cortex_tenants_users" ("tenant_id" uuid NOT NULL, "user_id" uuid NOT NULL) -  (1.2ms) CREATE INDEX "index_cortex_tenants_users_on_tenant_id" ON "cortex_tenants_users" ("tenant_id") -  (1.2ms) CREATE INDEX "index_cortex_tenants_users_on_user_id" ON "cortex_tenants_users" ("user_id") -  (0.3ms) DROP TABLE IF EXISTS "cortex_users" CASCADE -  (4.2ms) CREATE TABLE "cortex_users" ("id" uuid DEFAULT gen_random_uuid() NOT NULL PRIMARY KEY, "email" character varying DEFAULT '' NOT NULL, "firstname" character varying NOT NULL, "lastname" character varying NOT NULL, "locale" character varying(30) DEFAULT 'en_US' NOT NULL, "timezone" character varying(30) DEFAULT 'EST' NOT NULL, "deleted_at" timestamp, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "active_tenant_id" uuid, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying) -  (1.3ms) CREATE INDEX "index_cortex_users_on_active_tenant_id" ON "cortex_users" ("active_tenant_id") -  (1.2ms) CREATE INDEX "index_cortex_users_on_deleted_at" ON "cortex_users" ("deleted_at") -  (1.5ms) CREATE UNIQUE INDEX "index_cortex_users_on_email" ON "cortex_users" ("email") -  (1.2ms) CREATE UNIQUE INDEX "index_cortex_users_on_reset_password_token" ON "cortex_users" ("reset_password_token") -  (22.2ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_a0e0a401c2" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (10.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_017f0081f9" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (7.5ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_b4ecc1a4a7" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (1.2ms) ALTER TABLE "cortex_content_items" ADD CONSTRAINT "fk_rails_3cdc70a556" -FOREIGN KEY ("updated_by_id") - REFERENCES "cortex_users" ("id") - -  (5.7ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_60074af220" -FOREIGN KEY ("contract_id") - REFERENCES "cortex_contracts" ("id") - -  (1.2ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_210f129915" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.1ms) ALTER TABLE "cortex_content_types" ADD CONSTRAINT "fk_rails_db798ae410" -FOREIGN KEY ("creator_id") - REFERENCES "cortex_users" ("id") - -  (13.8ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_ba6a88b4e9" -FOREIGN KEY ("decorator_id") - REFERENCES "cortex_decorators" ("id") - -  (1.1ms) ALTER TABLE "cortex_contentable_decorators" ADD CONSTRAINT "fk_rails_6a305dd5e7" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (2.5ms) ALTER TABLE "cortex_contracts" ADD CONSTRAINT "fk_rails_d7e02b8da3" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.1ms) ALTER TABLE "cortex_decorators" ADD CONSTRAINT "fk_rails_d799512aaf" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (7.4ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_21cd780dfa" -FOREIGN KEY ("content_item_id") - REFERENCES "cortex_content_items" ("id") - -  (7.5ms) ALTER TABLE "cortex_field_items" ADD CONSTRAINT "fk_rails_c8a7c76f32" -FOREIGN KEY ("field_id") - REFERENCES "cortex_fields" ("id") - -  (1.6ms) ALTER TABLE "cortex_fields" ADD CONSTRAINT "fk_rails_7b193fea4e" -FOREIGN KEY ("content_type_id") - REFERENCES "cortex_content_types" ("id") - -  (8.9ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_83fc5ca812" -FOREIGN KEY ("permission_id") - REFERENCES "cortex_permissions" ("id") - -  (8.1ms) ALTER TABLE "cortex_permissions_roles" ADD CONSTRAINT "fk_rails_837826ce44" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (5.7ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_b8b25dbcb7" -FOREIGN KEY ("role_id") - REFERENCES "cortex_roles" ("id") - -  (1.1ms) ALTER TABLE "cortex_roles_users" ADD CONSTRAINT "fk_rails_fd7eb9e6ab" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.1ms) ALTER TABLE "cortex_tenants" ADD CONSTRAINT "fk_rails_484d1d2b2e" -FOREIGN KEY ("owner_id") - REFERENCES "cortex_users" ("id") - -  (3.4ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_9bd0ae910c" -FOREIGN KEY ("tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (1.1ms) ALTER TABLE "cortex_tenants_users" ADD CONSTRAINT "fk_rails_3f3682131f" -FOREIGN KEY ("user_id") - REFERENCES "cortex_users" ("id") - -  (1.1ms) ALTER TABLE "cortex_users" ADD CONSTRAINT "fk_rails_a08c46d6e5" -FOREIGN KEY ("active_tenant_id") - REFERENCES "cortex_tenants" ("id") - -  (2.3ms) CREATE TABLE "schema_migrations" ("version" character varying NOT NULL PRIMARY KEY) -  (1.7ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.5ms) INSERT INTO "schema_migrations" (version) VALUES (20180118233014) -  (0.6ms) INSERT INTO "schema_migrations" (version) VALUES -(20180118233001), -(20180118233002), -(20180118233003), -(20180118233004), -(20180118233005), -(20180118233006), -(20180118233007), -(20180118233008), -(20180118233009), -(20180118233010), -(20180118233011), -(20180118233012), -(20180118233013), -(0), -(10), -(11), -(12), -(13), -(1), -(2), -(3), -(4), -(5), -(6), -(7), -(8), -(9); - - -  (2.5ms) CREATE TABLE "ar_internal_metadata" ("key" character varying NOT NULL PRIMARY KEY, "value" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL) - ActiveRecord::InternalMetadata Load (1.9ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.2ms) BEGIN - SQL (1.4ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "key" [["key", "environment"], ["value", "development"], ["created_at", "2018-02-21 20:24:35.335695"], ["updated_at", "2018-02-21 20:24:35.335695"]] -  (0.6ms) COMMIT - ActiveRecord::InternalMetadata Load (0.2ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.1ms) BEGIN -  (0.2ms) COMMIT -  (0.2ms) SELECT pg_try_advisory_lock(2207846257810847325) -  (2.9ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC - ActiveRecord::InternalMetadata Load (1.9ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] -  (0.3ms) BEGIN -  (0.2ms) COMMIT -  (0.2ms) SELECT pg_advisory_unlock(2207846257810847325) -  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC -  (0.5ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC - Cortex::Tenant Load (0.8ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."name" = $1 LIMIT $2 [["name", "System"], ["LIMIT", 1]] -  (0.1ms) BEGIN - Cortex::User Exists (2.2ms) SELECT 1 AS one FROM "cortex_users" WHERE "cortex_users"."email" = $1 AND "cortex_users"."deleted_at" IS NULL LIMIT $2 [["email", "admin@cortexcms.org"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "System"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "system"], ["LIMIT", 1]] - Cortex::User Exists (0.2ms) SELECT 1 AS one FROM "cortex_users" WHERE "cortex_users"."email" = $1 AND "cortex_users"."deleted_at" IS NULL LIMIT $2 [["email", "admin@cortexcms.org"], ["LIMIT", 1]] - SQL (1.8ms) INSERT INTO "cortex_users" ("email", "firstname", "lastname", "created_at", "updated_at", "encrypted_password") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["email", "admin@cortexcms.org"], ["firstname", "Cortex"], ["lastname", "Admin"], ["created_at", "2018-02-21 20:31:06.906447"], ["updated_at", "2018-02-21 20:31:06.906447"], ["encrypted_password", "$2a$10$AUX8X9yOt2awz2825OcnfubcnymQkSs64M5qapi.zkcm.sv6loMvG"]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] - Cortex::Tenant Load (0.1ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] - SQL (1.9ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["name", "System"], ["name_id", "system"], ["description", "Core tenant for news/etc"], ["lft", 1], ["rgt", 2], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.909608"], ["updated_at", "2018-02-21 20:31:06.909608"]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] - SQL (0.6ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '3bb36785-532a-4781-b2a4-835a8f93d19a' ORDER BY "cortex_tenants"."lft" ASC) -  (1.6ms) COMMIT -  (0.1ms) BEGIN - Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "Example"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "example"], ["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] - Cortex::Tenant Load (0.3ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] - SQL (0.3ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["name", "Example"], ["name_id", "example"], ["description", "ContentTypes to get started with"], ["lft", 3], ["rgt", 4], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.923633"], ["updated_at", "2018-02-21 20:31:06.923633"]] - Cortex::Tenant Load (0.3ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ORDER BY "cortex_tenants"."lft" ASC) -  (0.4ms) COMMIT -  (0.1ms) BEGIN - Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name", "Bogus"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL LIMIT $2 [["name_id", "bogus"], ["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" ORDER BY "cortex_tenants"."rgt" DESC LIMIT $1 [["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - SQL (0.3ms) INSERT INTO "cortex_tenants" ("name", "name_id", "description", "parent_id", "lft", "rgt", "owner_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["name", "Bogus"], ["name_id", "bogus"], ["description", "Example subtenant"], ["parent_id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["lft", 5], ["rgt", 6], ["owner_id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["created_at", "2018-02-21 20:31:06.931868"], ["updated_at", "2018-02-21 20:31:06.931868"]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 ORDER BY "cortex_tenants"."lft" ASC LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] - SQL (0.7ms) UPDATE "cortex_tenants" SET "lft" = CASE WHEN "lft" BETWEEN 4 AND 4 THEN "lft" + 6 - 4 WHEN "lft" BETWEEN 5 AND 6 THEN "lft" + 4 - 5 ELSE "lft" END, "rgt" = CASE WHEN "rgt" BETWEEN 4 AND 4 THEN "rgt" + 6 - 4 WHEN "rgt" BETWEEN 5 AND 6 THEN "rgt" + 4 - 5 ELSE "rgt" END, "parent_id" = CASE WHEN "id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' THEN '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ELSE "parent_id" END, updated_at = '2018-02-21 20:31:06.937061' WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE ("cortex_tenants"."lft" BETWEEN 4 AND 6 OR "cortex_tenants"."rgt" BETWEEN 4 AND 6) ORDER BY "cortex_tenants"."lft" ASC) - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] -  (0.4ms) SELECT COUNT(*) FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."lft" <= 4) AND ("cortex_tenants"."rgt" >= 5) AND ("cortex_tenants"."id" != '8c55071e-a911-4deb-bde8-597ab6bd9c6c') - SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = 1 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' ORDER BY "cortex_tenants"."lft" ASC) - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 FOR UPDATE [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "8c55071e-a911-4deb-bde8-597ab6bd9c6c"], ["LIMIT", 1]] -  (0.2ms) SELECT COUNT(*) FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."lft" <= 4) AND ("cortex_tenants"."rgt" >= 5) AND ("cortex_tenants"."id" != '8c55071e-a911-4deb-bde8-597ab6bd9c6c') - SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = 1 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '8c55071e-a911-4deb-bde8-597ab6bd9c6c' ORDER BY "cortex_tenants"."lft" ASC) -  (0.3ms) COMMIT -  (0.1ms) BEGIN - SQL (0.7ms) INSERT INTO "cortex_contracts" ("name", "tenant_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["name", "Bogus"], ["tenant_id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["created_at", "2018-02-21 20:31:06.948293"], ["updated_at", "2018-02-21 20:31:06.948293"]] -  (0.3ms) COMMIT - Cortex::Tenant Load (0.5ms) SELECT "cortex_tenants".* FROM "cortex_tenants" INNER JOIN "cortex_tenants_users" ON "cortex_tenants"."id" = "cortex_tenants_users"."tenant_id" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants_users"."user_id" = $1 [["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] -  (0.1ms) BEGIN - Cortex::User Load (0.2ms) SELECT "cortex_users".* FROM "cortex_users" WHERE "cortex_users"."deleted_at" IS NULL AND "cortex_users"."id" = $1 LIMIT $2 [["id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name", "System"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name_id", "system"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] - SQL (0.4ms) UPDATE "cortex_tenants" SET "depth" = $1, "updated_at" = $2 WHERE "cortex_tenants"."id" = $3 [["depth", 0], ["updated_at", "2018-02-21 20:31:07.003520"], ["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["LIMIT", 1]] - SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '3bb36785-532a-4781-b2a4-835a8f93d19a' ORDER BY "cortex_tenants"."lft" ASC) - SQL (0.6ms) INSERT INTO "cortex_tenants_users" ("tenant_id", "user_id") VALUES ($1, $2) [["tenant_id", "3bb36785-532a-4781-b2a4-835a8f93d19a"], ["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] - Cortex::User Load (0.2ms) SELECT "cortex_users".* FROM "cortex_users" WHERE "cortex_users"."deleted_at" IS NULL AND "cortex_users"."id" = $1 LIMIT $2 [["id", "e32b6510-0944-446e-9b02-5edc422137fb"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.3ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name", "Example"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - Cortex::Tenant Exists (0.2ms) SELECT 1 AS one FROM "cortex_tenants" WHERE "cortex_tenants"."name_id" = $1 AND "cortex_tenants"."deleted_at" IS NULL AND ("cortex_tenants"."id" != $2) LIMIT $3 [["name_id", "example"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - SQL (0.3ms) UPDATE "cortex_tenants" SET "depth" = $1, "updated_at" = $2 WHERE "cortex_tenants"."id" = $3 [["depth", 0], ["updated_at", "2018-02-21 20:31:07.017041"], ["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"]] - Cortex::Tenant Load (0.2ms) SELECT "cortex_tenants".* FROM "cortex_tenants" WHERE "cortex_tenants"."id" = $1 LIMIT $2 [["id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["LIMIT", 1]] - SQL (0.5ms) UPDATE "cortex_tenants" SET "depth" = 0 WHERE "cortex_tenants"."id" IN (SELECT "cortex_tenants"."id" FROM "cortex_tenants" WHERE "cortex_tenants"."deleted_at" IS NULL AND "cortex_tenants"."id" = '7ecb7c09-4104-4431-91f2-b9bee97c6ad7' ORDER BY "cortex_tenants"."lft" ASC) - SQL (0.3ms) INSERT INTO "cortex_tenants_users" ("tenant_id", "user_id") VALUES ($1, $2) [["tenant_id", "7ecb7c09-4104-4431-91f2-b9bee97c6ad7"], ["user_id", "e32b6510-0944-446e-9b02-5edc422137fb"]] -  (0.3ms) COMMIT -  (0.1ms) BEGIN -  (0.1ms) COMMIT