/*
 Navicat Premium Dump SQL

 Source Server         : Goldie Dev
 Source Server Type    : PostgreSQL
 Source Server Version : 160011 (160011)
 Source Host           : 147.93.9.197:5432
 Source Catalog        : gnesis
 Source Schema         : public

 Target Server Type    : PostgreSQL
 Target Server Version : 160011 (160011)
 File Encoding         : 65001

 Date: 15/02/2026 02:19:57
*/


-- ----------------------------
-- Table structure for apps
-- ----------------------------
DROP TABLE IF EXISTS "public"."tabelapadrao_camposObrigatorios";
CREATE TABLE "public"."tabelapadrao_camposObrigatorios" (
  "id" int4 NOT NULL DEFAULT nextval('apps_id_seq'::regclass),
  
  "data_cadastro" timestamp(6),
  "data_atualizacao" timestamp(6),
  "usuario_cadastro" varchar(255) COLLATE "pg_catalog"."default" DEFAULT 'default'::character varying,
  "usuario_atualizacao" varchar(255) COLLATE "pg_catalog"."default" DEFAULT 'default'::character varying,
  "block_usuario_id" int4,
  "block_filial_id" int4,
  "block_empresa_id" int2,
  "block" int4 NOT NULL DEFAULT 0,
  "codigomd5" varchar(255) COLLATE "pg_catalog"."default",
  "ultatualizacao" timestamp(0),
  "usuarioc" varchar(255) COLLATE "pg_catalog"."default",
  "ultuser" varchar(255) COLLATE "pg_catalog"."default",
  "system" varchar(255) COLLATE "pg_catalog"."default",
  "block_quem" varchar(255) COLLATE "pg_catalog"."default",
  "block_data" timestamp(0) DEFAULT CURRENT_TIMESTAMP
)
;
COMMENT ON COLUMN "public"."apps"."paginas_definicoes" IS 'JSON com páginas de definições do Ramify liberadas para o app';

-- ----------------------------
-- Table structure for capitulos
-- ----------------------------
DROP TABLE IF EXISTS "public"."capitulos";
CREATE TABLE "public"."capitulos" (
  "id" int4 NOT NULL DEFAULT nextval('capitulos_id_seq'::regclass),
  "hash" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "pensamento_hash" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "titulo" varchar(500) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
  "descricao" text COLLATE "pg_catalog"."default",
  "cor_identificacao" varchar(7) COLLATE "pg_catalog"."default" DEFAULT '#7c3aed'::character varying,
  "data_cadastro" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
  "created_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
  "updated_at" timestamp(6),
  "deleted_at" timestamp(6)
)
;
COMMENT ON COLUMN "public"."capitulos"."hash" IS 'Hash único: MD5(data_cadastro + pensamento_hash)';
COMMENT ON COLUMN "public"."capitulos"."pensamento_hash" IS 'Hash do pensamento que é capítulo';
COMMENT ON COLUMN "public"."capitulos"."titulo" IS 'Título opcional do capítulo';
COMMENT ON COLUMN "public"."capitulos"."cor_identificacao" IS 'Cor para identificação visual do capítulo';
COMMENT ON TABLE "public"."capitulos" IS 'Capítulos de pensamentos (pensamentos trigger/principais)';

-- ----------------------------
-- Table structure for conexoes
-- ----------------------------
DROP TABLE IF EXISTS "public"."conexoes";
CREATE TABLE "public"."conexoes" (
  "id" int4 NOT NULL DEFAULT nextval('conexoes_id_seq'::regclass),
  "capitulos_hash" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "pensamentos_hash" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "nivel" int4 DEFAULT 1,
  "capitulos_pensamento_hash" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
  "ordem" int4 DEFAULT 0,
  "tipo_conexao" varchar(50) COLLATE "pg_catalog"."default" DEFAULT 'hierarchical'::character varying,
  "created_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
  "updated_at" timestamp(6),
  "deleted_at" timestamp(6)
)
;
COMMENT ON COLUMN "public"."conexoes"."capitulos_hash" IS 'Hash do capítulo ao qual o pensamento pertence';
COMMENT ON COLUMN "public"."conexoes"."pensamentos_hash" IS 'Hash do pensamento conectado';
COMMENT ON COLUMN "public"."conexoes"."nivel" IS 'Nível hierárquico da conexão (1=primeiro nível, 2=segundo...)';
COMMENT ON COLUMN "public"."conexoes"."capitulos_pensamento_hash" IS 'Conexão com outro capítulo';
COMMENT ON COLUMN "public"."conexoes"."tipo_conexao" IS 'Tipo: hierarchical, reference, bidirectional';
COMMENT ON TABLE "public"."conexoes" IS 'Conexões e hierarquias entre pensamentos e capítulos';

-- ----------------------------
-- Table structure for pensamentos
-- ----------------------------
DROP TABLE IF EXISTS "public"."pensamentos";
CREATE TABLE "public"."pensamentos" (
  "id" int4 NOT NULL DEFAULT nextval('pensamentos_id_seq'::regclass),
  "hash" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "transcricao" text COLLATE "pg_catalog"."default" NOT NULL,
  "capitulo" bool DEFAULT false,
  "capitulos_hash" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
  "canvaitem" bool DEFAULT false,
  "canvaitem_pensamentos_hash" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
  "dia_efetivo" date NOT NULL,
  "usuario_id" int4 NOT NULL,
  "posicao_x" int4,
  "posicao_y" int4,
  "largura" int4 DEFAULT 300,
  "altura" int4 DEFAULT 200,
  "cor_fundo" varchar(7) COLLATE "pg_catalog"."default" DEFAULT '#1a1a2e'::character varying,
  "minimizado" bool DEFAULT false,
  "ordem_visual" int4 DEFAULT 0,
  "created_at" timestamp(6) DEFAULT CURRENT_TIMESTAMP,
  "updated_at" timestamp(6),
  "deleted_at" timestamp(6)
)
;
COMMENT ON COLUMN "public"."pensamentos"."hash" IS 'Hash único: MD5(data + usuario_id + sequencial)';
COMMENT ON COLUMN "public"."pensamentos"."transcricao" IS 'Conteúdo do pensamento';
COMMENT ON COLUMN "public"."pensamentos"."capitulo" IS 'Se é um capítulo/pensamento trigger';
COMMENT ON COLUMN "public"."pensamentos"."capitulos_hash" IS 'Referência ao capítulo ao qual pertence';
COMMENT ON COLUMN "public"."pensamentos"."canvaitem" IS 'Se é um subitem de outro pensamento';
COMMENT ON COLUMN "public"."pensamentos"."canvaitem_pensamentos_hash" IS 'Hash do pensamento pai';
COMMENT ON COLUMN "public"."pensamentos"."dia_efetivo" IS 'Data efetiva do pensamento (diário obrigatório)';
COMMENT ON COLUMN "public"."pensamentos"."posicao_x" IS 'Posição X no canvas';
COMMENT ON COLUMN "public"."pensamentos"."posicao_y" IS 'Posição Y no canvas';
COMMENT ON TABLE "public"."pensamentos" IS 'Pensamentos/Notas do sistema de controle de ideias';

-- ----------------------------
-- Primary Key structure for table apps
-- ----------------------------
ALTER TABLE "public"."apps" ADD CONSTRAINT "apps_pkey" PRIMARY KEY ("id");

-- ----------------------------
-- Indexes structure for table capitulos
-- ----------------------------
CREATE INDEX "idx_capitulos_data_cadastro" ON "public"."capitulos" USING btree (
  "data_cadastro" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
CREATE INDEX "idx_capitulos_deleted_at" ON "public"."capitulos" USING btree (
  "deleted_at" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
CREATE INDEX "idx_capitulos_hash" ON "public"."capitulos" USING btree (
  "hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_capitulos_pensamento_hash" ON "public"."capitulos" USING btree (
  "pensamento_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE UNIQUE INDEX "uk_capitulo_pensamento" ON "public"."capitulos" USING btree (
  "pensamento_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted_at IS NULL;

-- ----------------------------
-- Uniques structure for table capitulos
-- ----------------------------
ALTER TABLE "public"."capitulos" ADD CONSTRAINT "capitulos_hash_key" UNIQUE ("hash");

-- ----------------------------
-- Primary Key structure for table capitulos
-- ----------------------------
ALTER TABLE "public"."capitulos" ADD CONSTRAINT "capitulos_pkey" PRIMARY KEY ("id");

-- ----------------------------
-- Indexes structure for table conexoes
-- ----------------------------
CREATE INDEX "idx_conexoes_capitulos_hash" ON "public"."conexoes" USING btree (
  "capitulos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_conexoes_capitulos_pensamento_hash" ON "public"."conexoes" USING btree (
  "capitulos_pensamento_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_conexoes_deleted_at" ON "public"."conexoes" USING btree (
  "deleted_at" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
CREATE INDEX "idx_conexoes_nivel" ON "public"."conexoes" USING btree (
  "nivel" "pg_catalog"."int4_ops" ASC NULLS LAST
);
CREATE INDEX "idx_conexoes_pensamentos_hash" ON "public"."conexoes" USING btree (
  "pensamentos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE UNIQUE INDEX "uk_conexao_pensamento_capitulo" ON "public"."conexoes" USING btree (
  "pensamentos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
  "capitulos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
) WHERE deleted_at IS NULL;

-- ----------------------------
-- Primary Key structure for table conexoes
-- ----------------------------
ALTER TABLE "public"."conexoes" ADD CONSTRAINT "conexoes_pkey" PRIMARY KEY ("id");

-- ----------------------------
-- Indexes structure for table pensamentos
-- ----------------------------
CREATE INDEX "idx_pensamentos_canvaitem_hash" ON "public"."pensamentos" USING btree (
  "canvaitem_pensamentos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_pensamentos_capitulos_hash" ON "public"."pensamentos" USING btree (
  "capitulos_hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_pensamentos_deleted_at" ON "public"."pensamentos" USING btree (
  "deleted_at" "pg_catalog"."timestamp_ops" ASC NULLS LAST
);
CREATE INDEX "idx_pensamentos_dia_efetivo" ON "public"."pensamentos" USING btree (
  "dia_efetivo" "pg_catalog"."date_ops" ASC NULLS LAST
);
CREATE INDEX "idx_pensamentos_hash" ON "public"."pensamentos" USING btree (
  "hash" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_pensamentos_usuario_id" ON "public"."pensamentos" USING btree (
  "usuario_id" "pg_catalog"."int4_ops" ASC NULLS LAST
);

-- ----------------------------
-- Uniques structure for table pensamentos
-- ----------------------------
ALTER TABLE "public"."pensamentos" ADD CONSTRAINT "pensamentos_hash_key" UNIQUE ("hash");

-- ----------------------------
-- Checks structure for table pensamentos
-- ----------------------------
ALTER TABLE "public"."pensamentos" ADD CONSTRAINT "check_canvaitem_parent" CHECK (canvaitem = false AND canvaitem_pensamentos_hash IS NULL OR canvaitem = true AND canvaitem_pensamentos_hash IS NOT NULL);

-- ----------------------------
-- Primary Key structure for table pensamentos
-- ----------------------------
ALTER TABLE "public"."pensamentos" ADD CONSTRAINT "pensamentos_pkey" PRIMARY KEY ("id");
