Pārlūkot izejas kodu

criação de migrations, seed e ajuste na estrura do backend

leonardo 3 mēneši atpakaļ
vecāks
revīzija
07f4b35f18

+ 0 - 7
.env

@@ -1,7 +0,0 @@
-PORT=3001
-CORS_ORIGIN=http://localhost:5173
-QDRANT_URL=http://localhost:6333
-QDRANT_COLLECTION=empresa_docs
-OLLAMA_URL=http://localhost:11434
-OLLAMA_EMBEDDINGS_MODEL=nomic-embed-text
-OLLAMA_CHAT_MODEL=llama3.1

+ 6 - 0
.gitignore

@@ -0,0 +1,6 @@
+package-lock.json
+/node_modules/*
+yarn.lock
+.yarn
+/data/*
+.env

+ 19 - 0
db/migrations/20260609164817_create_usuarios_table.cjs

@@ -0,0 +1,19 @@
+
+exports.up = function(knex, Promise) {
+    return knex.schema.createTable('usuarios', t => {
+        t.increments('Id')
+        t.string('Nome').notNullable()
+        t.string('Login').notNullable()
+        t.string('Senha').notNullable()
+        t.string('Email').notNullable()
+        t.string('Status').notNullable()
+        t.string('Nivel').notNullable()
+        t.string('Setor').notNullable()
+    })
+
+  
+};
+
+exports.down = function(knex, Promise) {
+  return knex.schema.dropTable('usuarios')
+};

+ 16 - 0
db/seeds/usuario.js

@@ -0,0 +1,16 @@
+export async function seed(knex) {
+  const usuarios = [
+    {
+      Id: 1,
+      Nome: "Leonardo",
+      Login: "leonardo",
+      Email: "leonardo@star.psi.br",
+      Senha: "$2b$08$OckwNAnmdnIyjiDtCRpXN./1h2pphmTFdKpQz.U3ZLHt63Rq7NmHC",
+      Status: 1,
+      Nivel: 1,
+      Setor: 1
+    }
+  ];
+
+  await knex("usuarios").insert(usuarios).onConflict("Id").ignore();
+}

+ 24 - 0
knexfile.js

@@ -0,0 +1,24 @@
+import "dotenv/config";
+
+export default {
+  development: {
+    client: "mysql",
+    connection: {
+      host: process.env.DB_HOST,
+      user: process.env.DB_USER,
+      port: process.env.DB_PORT,
+      password: process.env.DB_PASS,
+      database: process.env.DB_SCHEMA,
+      charset: "utf8mb4",
+      collation: "utf8mb4_bin"
+    },
+    migrations: {
+      tableName: "knex_migrations",
+      directory: "./db/migrations"
+    },
+    seeds: {
+      tableName: "knex_seeds",
+      directory: "./db/seeds"
+    }
+  }
+};

+ 6 - 0
package.json

@@ -5,6 +5,9 @@
   "scripts": {
     "dev": "node --watch server.js",
     "start": "node server.js",
+    "migrate:latest": "knex migrate:latest",
+    "migrate:rollback": "knex migrate:rollback",
+    "seed:run": "knex seed:run",
     "lint": "node -c server.js && node -c app.js",
     "build": "node -c server.js"
   },
@@ -14,9 +17,12 @@
     "dotenv": "^16.4.5",
     "express": "^4.19.2",
     "helmet": "^7.1.0",
+    "knex": "^3.2.10",
     "mammoth": "^1.8.0",
     "morgan": "^1.10.0",
     "multer": "^2.0.0",
+    "mysql": "^2.18.1",
+    "mysql2": "^3.22.5",
     "pdf-parse": "^1.1.1",
     "zod": "^3.23.8"
   },

+ 0 - 0
config/collections.js → src/config/collections.js


+ 36 - 0
src/config/db.config.js

@@ -0,0 +1,36 @@
+require('dotenv').config()
+
+const mysql = require('mysql');
+const connection = mysql.createConnection({
+    host: process.env.DB_HOST,
+    port: process.env.DB_PORT,
+    user: process.env.DB_USER,
+    password: process.env.DB_PASS,
+    database: process.env.DB_SCHEMA,
+    charset: "utf8mb4",
+    collation: "utf8mb4_bin",
+});
+
+var knex = require('knex')({
+    client: 'mysql',
+    connection: {
+        host: process.env.DB_HOST,
+        port: process.env.DB_PORT,
+        user: process.env.DB_USER,
+        password: process.env.DB_PASS,
+        database: process.env.DB_SCHEMA,
+        charset: "utf8mb4",
+        collation: "utf8mb4_bin",
+    },
+    migrations: {
+        tableName: 'knex_seeds',
+        directory: './db/migrations'
+    },
+    seeds: {
+        tableName: 'knex_seeds',
+        directory: './db/seeds'
+    }
+});
+
+module.exports.connection = connection;
+module.exports.knex = knex;

+ 0 - 0
config/index.js → src/config/index.js


+ 2 - 0
src/config/server.js

@@ -0,0 +1,2 @@
+require('dotenv').config();
+module.exports.port = process.env.SERVER_PORT ?? 4000;

+ 0 - 0
middleware/auth.js → src/middleware/auth.js


+ 0 - 0
middleware/errorHandler.js → src/middleware/errorHandler.js


+ 0 - 0
middleware/rateLimit.js → src/middleware/rateLimit.js


+ 1 - 1
routes/chat.js → src/routes/chat.js

@@ -1,6 +1,6 @@
 import { Router } from "express";
 import { z } from "zod";
-import { answerWithContext } from "../chat/chatChain.js";
+import { answerWithContext } from "../../chat/chatChain.js";
 import fs from "node:fs";
 
 export const chatRouter = Router();

+ 0 - 0
routes/documents.js → src/routes/documents.js


+ 0 - 0
routes/index.js → src/routes/index.js


+ 1 - 1
routes/ingest.js → src/routes/ingest.js

@@ -1,7 +1,7 @@
 import { Router } from "express";
 import { z } from "zod";
 import multer from "multer";
-import { extractDocumentsFromUpload, ingestDocuments } from "../chat/ingest.js";
+import { extractDocumentsFromUpload, ingestDocuments } from "../../chat/ingest.js";
 import fs from "node:fs";
 
 export const ingestRouter = Router();

+ 1 - 1
routes/search.js → src/routes/search.js

@@ -1,6 +1,6 @@
 import { Router } from "express";
 import { z } from "zod";
-import { searchDocs } from "../chat/searchChat.js";
+import { searchDocs } from "../../chat/searchChat.js";
 
 export const searchRouter = Router();
 

+ 0 - 0
services/collectionService.js → src/services/collectionService.js


+ 0 - 0
services/documentsService.js → src/services/documentsService.js


+ 0 - 0
services/loader.js → src/services/loader.js


+ 0 - 0
services/ollama.js → src/services/ollama.js


+ 0 - 0
services/ollamaClient.js → src/services/ollamaClient.js


+ 0 - 0
services/qdrant.js → src/services/qdrant.js


+ 0 - 0
services/qdrantClient.js → src/services/qdrantClient.js


+ 0 - 0
services/textChunker.js → src/services/textChunker.js