@builderbot/database-postgres 1.0.15-alpha.0 → 1.0.17-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var t=require("pg");exports.PostgreSQLAdapter=class{constructor(t){this.listHistory=[],this.credentials={host:"localhost",user:"",database:"",password:null,port:5432},this.credentials=t,this.init().then()}async init(){try{const n=new t.Pool(this.credentials),o=await n.connect();return this.db=o,console.log("🆗 Conexión Correcta DB"),this.checkTableExistsAndSP(),!0}catch(t){throw console.log("Error",t),t}}async getPrevByNumber(t){try{const n=(await this.db.query("SELECT * FROM public.history WHERE phone = $1 ORDER BY created_at DESC LIMIT 1",[t])).rows[0];return n&&(n.refSerialize=n.refserialize,delete n.refserialize),n}catch(t){throw console.error("Error al obtener la entrada anterior por número:",t),t}}async save(t){const n=[t.ref,t.keyword,t.answer,t.refSerialize,t.phone,JSON.stringify(t.options)];try{await this.db.query("SELECT save_or_update_history_and_contact($1, $2, $3, $4, $5, $6)",n),console.log("🆗 Historico creado con exito")}catch(t){throw console.error("Error al registrar la entrada del historial:",t),t}this.listHistory.push(t)}async getContact(t){const n=t.phone;try{return(await this.db.query("SELECT * FROM public.contact WHERE phone = $1 LIMIT 1",[n])).rows[0]}catch(t){throw console.error("Error al obtener contacto por número:",t.mesage),t}}async saveContact(t){const n=await this.getContact(t);let o={};o="a"===(t?.action??"a")?{...n?.values,...t?.values??{}}:t?.values??{};const e=[t.from,JSON.stringify(o)];try{await this.db.query("SELECT save_or_update_contact($1, $2)",e),console.log("🆗 Contacto guardado o actualizado con éxito")}catch(t){throw console.error("🚫 Error al guardar o actualizar contacto:",t),t}}async checkTableExistsAndSP(){try{await this.db.query("\n CREATE TABLE IF NOT EXISTS contact (\n id SERIAL PRIMARY KEY,\n phone VARCHAR(255) NOT NULL,\n created_at TIMESTAMP DEFAULT current_timestamp,\n updated_in TIMESTAMP,\n last_interaction TIMESTAMP,\n values JSONB\n )"),console.log("🆗 Tabla contact existe o fue creada con éxito")}catch(t){throw console.error("🚫 Error al crear la tabla contact:",t),t}try{await this.db.query("\n CREATE TABLE IF NOT EXISTS history (\n id SERIAL PRIMARY KEY,\n ref VARCHAR(255) NOT NULL,\n keyword VARCHAR(255),\n answer TEXT NOT NULL,\n refSerialize TEXT NOT NULL,\n phone VARCHAR(255) NOT NULL,\n options JSONB,\n created_at TIMESTAMP DEFAULT current_timestamp,\n updated_in TIMESTAMP,\n contact_id INTEGER REFERENCES contact(id)\n )"),console.log("🆗 Tabla history existe o fue creada con éxito")}catch(t){throw console.error("🚫 Error al crear la tabla de history:",t),t}await this.createSP()}async createSP(){try{await this.db.query('\n CREATE OR REPLACE FUNCTION save_or_update_contact(\n in_phone VARCHAR(255),\n in_values JSONB\n )\n RETURNS VOID AS\n $$\n DECLARE\n contact_cursor refcursor := \'cur_contact\';\n contact_id INT;\n BEGIN\n SELECT id INTO contact_id FROM contact WHERE phone = in_phone;\n \n IF contact_id IS NULL THEN\n INSERT INTO contact (phone, "values")\n VALUES (in_phone, in_values);\n ELSE\n UPDATE contact SET "values" = in_values, updated_in = current_timestamp\n WHERE id = contact_id;\n END IF;\n END;\n $$ LANGUAGE plpgsql;'),console.log("🆗 Procedimiento almacenado de contacto existe o fue creada con éxito")}catch(t){throw console.error("🚫 Error al crear el procedimiento almacenado de contacto:",t),t}try{await this.db.query("\n CREATE OR REPLACE FUNCTION save_or_update_history_and_contact(\n in_ref VARCHAR(255),\n in_keyword VARCHAR(255),\n in_answer TEXT,\n in_refserialize TEXT,\n in_phone VARCHAR(255),\n in_options JSONB\n )\n RETURNS VOID AS\n $$\n DECLARE\n _contact_id INT;\n BEGIN\n SELECT id INTO _contact_id FROM contact WHERE phone = in_phone;\n \n IF _contact_id IS NULL THEN\n INSERT INTO contact (phone)\n VALUES (in_phone)\n RETURNING id INTO _contact_id;\n ELSE\n UPDATE contact SET last_interaction = current_timestamp WHERE id = _contact_id;\n END IF;\n \n INSERT INTO history (ref, keyword, answer, refserialize, phone, options, contact_id, created_at)\n VALUES (in_ref, in_keyword, in_answer, in_refserialize, in_phone, in_options, _contact_id, current_timestamp);\n \n END;\n $$ LANGUAGE plpgsql;"),console.log("🆗 Procedimiento almacenado de historico existe o fue creada con éxito")}catch(t){throw console.error("🚫 Error al crear el procedimiento almacenado de historico:",t),t}}};
1
+ "use strict";var t=require("@builderbot/bot"),n=require("pg");class e extends t.MemoryDB{constructor(t){super(),this.listHistory=[],this.credentials={host:"localhost",user:"",database:"",password:null,port:5432},this.credentials=t,this.init().then()}async init(){try{const t=new n.Pool(this.credentials),e=await t.connect();return this.db=e,console.log("🆗 Successful DB Connection"),this.checkTableExistsAndSP(),!0}catch(t){throw console.log("Error",t),t}}async getPrevByNumber(t){try{const n=(await this.db.query("SELECT * FROM public.history WHERE phone = $1 ORDER BY created_at DESC LIMIT 1",[t])).rows[0];return n&&(n.refSerialize=n.refserialize,delete n.refserialize),n}catch(t){throw console.error("Error getting previous entry by number:",t),t}}async save(t){const n=[t.ref,t.keyword,t.answer,t.refSerialize,t.phone,JSON.stringify(t.options)];try{await this.db.query("SELECT save_or_update_history_and_contact($1, $2, $3, $4, $5, $6)",n)}catch(t){throw console.error("Error registering history entry:",t),t}this.listHistory.push(t)}async getContact(t){const n=t.phone;try{return(await this.db.query("SELECT * FROM public.contact WHERE phone = $1 LIMIT 1",[n])).rows[0]}catch(t){throw console.error("Error getting contact by number:",t.message),t}}async saveContact(t){const n=await this.getContact(t);let e={};e="a"===(t?.action??"a")?{...n?.values,...t?.values??{}}:t?.values??{};const r=[t.from,JSON.stringify(e)];try{await this.db.query("SELECT save_or_update_contact($1, $2)",r)}catch(t){throw console.error("🚫 Error saving or updating contact:",t),t}}async checkTableExistsAndSP(){try{await this.db.query("\n CREATE TABLE IF NOT EXISTS contact (\n id SERIAL PRIMARY KEY,\n phone VARCHAR(255) NOT NULL,\n created_at TIMESTAMP DEFAULT current_timestamp,\n updated_in TIMESTAMP,\n last_interaction TIMESTAMP,\n values JSONB\n )")}catch(t){throw console.error("🚫 Error creating the contact table:",t),t}try{await this.db.query("\n CREATE TABLE IF NOT EXISTS history (\n id SERIAL PRIMARY KEY,\n ref VARCHAR(255) NOT NULL,\n keyword VARCHAR(255),\n answer TEXT NOT NULL,\n refSerialize TEXT NOT NULL,\n phone VARCHAR(255) NOT NULL,\n options JSONB,\n created_at TIMESTAMP DEFAULT current_timestamp,\n updated_in TIMESTAMP,\n contact_id INTEGER REFERENCES contact(id)\n )")}catch(t){throw console.error("🚫 Error creating the history table:",t),t}await this.createSP()}async createSP(){try{await this.db.query('\n CREATE OR REPLACE FUNCTION save_or_update_contact(\n in_phone VARCHAR(255),\n in_values JSONB\n )\n RETURNS VOID AS\n $$\n DECLARE\n contact_cursor refcursor := \'cur_contact\';\n contact_id INT;\n BEGIN\n SELECT id INTO contact_id FROM contact WHERE phone = in_phone;\n \n IF contact_id IS NULL THEN\n INSERT INTO contact (phone, "values")\n VALUES (in_phone, in_values);\n ELSE\n UPDATE contact SET "values" = in_values, updated_in = current_timestamp\n WHERE id = contact_id;\n END IF;\n END;\n $$ LANGUAGE plpgsql;')}catch(t){throw console.error("🚫 Error creating the stored procedure for contact:",t),t}try{await this.db.query("\n CREATE OR REPLACE FUNCTION save_or_update_history_and_contact(\n in_ref VARCHAR(255),\n in_keyword VARCHAR(255),\n in_answer TEXT,\n in_refserialize TEXT,\n in_phone VARCHAR(255),\n in_options JSONB\n )\n RETURNS VOID AS\n $$\n DECLARE\n _contact_id INT;\n BEGIN\n SELECT id INTO _contact_id FROM contact WHERE phone = in_phone;\n \n IF _contact_id IS NULL THEN\n INSERT INTO contact (phone)\n VALUES (in_phone)\n RETURNING id INTO _contact_id;\n ELSE\n UPDATE contact SET last_interaction = current_timestamp WHERE id = _contact_id;\n END IF;\n \n INSERT INTO history (ref, keyword, answer, refserialize, phone, options, contact_id, created_at)\n VALUES (in_ref, in_keyword, in_answer, in_refserialize, in_phone, in_options, _contact_id, current_timestamp);\n \n END;\n $$ LANGUAGE plpgsql;")}catch(t){throw console.error("🚫 Error creating the stored procedure for history:",t),t}}}exports.PostgreSQLAdapter=e;
@@ -1,5 +1,7 @@
1
+ import { MemoryDB } from '@builderbot/bot';
2
+
1
3
  import { Contact, Credential, HistoryEntry } from './types';
2
- declare class PostgreSQLAdapter {
4
+ declare class PostgreSQLAdapter extends MemoryDB {
3
5
  db: any;
4
6
  listHistory: HistoryEntry[];
5
7
  credentials: Credential;
@@ -1 +1 @@
1
- {"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../src/postgresAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3D,cAAM,iBAAiB;IACnB,EAAE,EAAE,GAAG,CAAA;IACP,WAAW,EAAE,YAAY,EAAE,CAAK;IAChC,WAAW,EAAE,UAAU,CAA4E;gBAEvF,YAAY,EAAE,UAAU;IAK9B,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAcpC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAkBhE,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IActC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAY3D,WAAW,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB/B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAsElC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"postgresAdapter.d.ts","sourceRoot":"","sources":["../src/postgresAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3D,cAAM,iBAAkB,SAAQ,QAAQ;IACpC,EAAE,EAAE,GAAG,CAAA;IACP,WAAW,EAAE,YAAY,EAAE,CAAK;IAChC,WAAW,EAAE,UAAU,CAA4E;gBAEvF,YAAY,EAAE,UAAU;IAM9B,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAcpC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAkBhE,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAatC,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAY3D,WAAW,CAAC,GAAG,KAAA,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAoElC;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@builderbot/database-postgres",
3
- "version": "1.0.15-alpha.0",
3
+ "version": "1.0.17-alpha.0",
4
4
  "description": "> TODO: description",
5
5
  "author": "vicente1992 <vic_ortiz20@hotmail.es>",
6
6
  "homepage": "https://github.com/codigoencasa/bot-whatsapp#readme",
@@ -29,6 +29,7 @@
29
29
  "url": "https://github.com/codigoencasa/bot-whatsapp/issues"
30
30
  },
31
31
  "dependencies": {
32
+ "@builderbot/bot": "^1.0.17-alpha.0",
32
33
  "pg": "^8.11.2"
33
34
  },
34
35
  "devDependencies": {
@@ -45,5 +46,5 @@
45
46
  "tslib": "^2.6.2",
46
47
  "tsm": "^2.3.0"
47
48
  },
48
- "gitHead": "1c27b9a265b8b8649bcc6d5c05c5265077a0047d"
49
+ "gitHead": "b1b245c7a9733a9e9de1f8a92ff152ed42f4f501"
49
50
  }