mirror of
https://github.com/hoshikawa2/rfp_response_automation.git
synced 2026-03-03 16:09:35 +00:00
113 lines
3.5 KiB
SQL
113 lines
3.5 KiB
SQL
-- Tabela de entidades
|
|
CREATE TABLE entities (
|
|
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
name VARCHAR2(255) UNIQUE NOT NULL
|
|
);
|
|
|
|
-- Tabela de relações
|
|
CREATE TABLE relations (
|
|
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
from_entity_id NUMBER REFERENCES entities(id),
|
|
to_entity_id NUMBER REFERENCES entities(id),
|
|
relation VARCHAR2(255),
|
|
source_text VARCHAR2(1000)
|
|
);
|
|
|
|
BEGIN
|
|
ordsadmin.graph_view_admin.create_graph_view(
|
|
graph_view_name => 'my_graph',
|
|
vertex_table_names => 'ENTITIES',
|
|
edge_table_names => 'RELATIONS',
|
|
vertex_id_column => 'ID',
|
|
edge_source_column => 'FROM_ENTITY_ID',
|
|
edge_destination_column => 'TO_ENTITY_ID'
|
|
);
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE PROPERTY GRAPH my_graph
|
|
VERTEX TABLES (ENTITIES
|
|
KEY (ID)
|
|
LABEL ENTITIES
|
|
PROPERTIES (NAME))
|
|
EDGE TABLES (RELATIONS
|
|
KEY (ID)
|
|
SOURCE KEY (SOURCE_ID) REFERENCES ENTITIES(ID)
|
|
DESTINATION KEY (TARGET_ID) REFERENCES ENTITIES(ID)
|
|
LABEL RELATIONS
|
|
PROPERTIES (RELATION_TYPE, SOURCE_TEXT))
|
|
options (PG_PGQL)
|
|
|
|
-- Drope o índice antigo, se necessário
|
|
DROP INDEX ent_name_text_idx;
|
|
DROP INDEX rel_type_text_idx;
|
|
|
|
-- Crie com o tipo correto
|
|
CREATE INDEX ent_name_text_idx ON ENTITIES(NAME) INDEXTYPE IS CTXSYS.CONTEXT;
|
|
CREATE INDEX rel_type_text_idx ON RELATIONS(RELATION_TYPE) INDEXTYPE IS CTXSYS.CONTEXT;
|
|
|
|
EXEC CTX_DDL.SYNC_INDEX('ENT_NAME_TEXT_IDX');
|
|
EXEC CTX_DDL.SYNC_INDEX('REL_TYPE_TEXT_IDX');
|
|
|
|
SELECT from_entity,
|
|
relation_type,
|
|
to_entity
|
|
FROM GRAPH_TABLE(
|
|
my_graph
|
|
MATCH (e1 is ENTITIES)-[r is RELATIONS]->(e2 is ENTITIES)
|
|
WHERE CONTAINS(LOWER(e1.name), 'gateway') > 0
|
|
OR CONTAINS(LOWER(e2.name), 'gateway') > 0
|
|
OR CONTAINS(LOWER(r.RELATION_TYPE), 'gateway') > 0
|
|
COLUMNS (
|
|
e1.name AS from_entity, r.RELATION_TYPE AS relation_type, e2.name AS to_entity
|
|
)
|
|
)
|
|
FETCH FIRST 20 ROWS ONLY
|
|
|
|
---------------
|
|
-- # 2026-01-29 - VECTOR 23ai
|
|
|
|
CREATE TABLE rag_docs (
|
|
id NUMBER GENERATED BY DEFAULT AS IDENTITY,
|
|
content CLOB,
|
|
source VARCHAR2(1000),
|
|
chunk_hash VARCHAR2(64),
|
|
status VARCHAR2(20),
|
|
embed VECTOR(1024)
|
|
);
|
|
|
|
CREATE VECTOR INDEX rag_docs_idx
|
|
ON rag_docs(embed)
|
|
ORGANIZATION HNSW
|
|
DISTANCE COSINE;
|
|
|
|
-------------------
|
|
-- #2026-02-07 - app_users
|
|
|
|
DROP TABLE app_users;
|
|
|
|
CREATE TABLE app_users (
|
|
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
|
|
username VARCHAR2(100) UNIQUE,
|
|
name VARCHAR2(200),
|
|
email VARCHAR2(200) UNIQUE,
|
|
|
|
user_role VARCHAR2(50),
|
|
|
|
password_hash VARCHAR2(300),
|
|
|
|
active NUMBER(1) DEFAULT 1,
|
|
|
|
reset_token VARCHAR2(300),
|
|
reset_expire TIMESTAMP,
|
|
|
|
must_change_password NUMBER(1) DEFAULT 0,
|
|
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX idx_users_email ON app_users(email);
|
|
CREATE INDEX idx_users_token ON app_users(reset_token);
|