@gamalielmh921230/mysqlsync

[![alt text](https://www.paypalobjects.com/es_XC/MX/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=HJT3RJKJ44EWQ&source=url ) # Como Se Instala ```javascript //con npm npm i @gamalielmh921230/mysqlsy

Usage no npm install needed!

<script type="module">
  import gamalielmh921230Mysqlsync from 'https://cdn.skypack.dev/@gamalielmh921230/mysqlsync';
</script>

README

mysqlSync

mysqlSync es una herramienta para sincronizar la esturctura de una base de datos apartir de otra añadiendo o eliminando tablas,campos,funciones,procedimientos dependendiendo las diferencias que se encuentren entre una y otra.

Apoyar el proyecto

alt text

Como Se Instala

//con npm
npm i @gamalielmh921230/mysqlsync 
//con yarn
yarn add @gamalielmh921230/mysqlsync

Clases Que La Componen

Mysql

es un envoltorio para el modulo de mysql de node que añade soporta para promesas

Propiedades

  • isConnected -> Indica si esta conectado con la base de datos
  • cDatabase -> Nombre de la base de datos

Metodos

  • connect(): establece la conexion con la base de datos
  • query(sql,args): ejecuta las sentencias de sql
  • release(): Cierra la conexion con la base de datos
  • beginTransaction(): Comienza una transaccion
  • commit(): Completa la transaccion
  • rollback(): Concela la transaccion
  • escape(str): Escapa los caracteres de un String

Como se Usa

const {Mysql} = require('@gamalielmh921230/mysqlsync')

const Cnn = new Mysql({
    host: "localhost", 
    user: "root", 
    password: "12345",
    database: "mydb",
    timeout: 60000
})

await Cnn.connect()
const [result]= await Cnn.query("SELECT CURDATE() AS FECHA")
console.log(result.FECHA)//--> imprime la fecha del servidor

SyncDb

es una clase que se encarga de compara y sincronizar la estructura de dos bases de datos

Propiedades

  • TablesDiff -> Objeto Con las diferencias encontradas en las tablas al ejecutar metodo Compare
  • ViewsDiff -> Objeto Con las diferencias encontradas en las vistas al ejecutar metodo Compare
  • ProceduresDiff -> Objeto Con las diferencias encontradas en los procedimientos al ejecutar metodo Compare
  • FunctionsDiff -> Objeto Con las diferencias encontradas en las funciones al ejecutar metodo Compare

Metodos

  • Compare(): Compra la estructura de las bases de datos y obtiene las diferencias
  • Sync(): Sincroniza la estructura de las bases de datos aplicando las diferencias encontradas(si no se llamo al metodo Compare antes lo llama internamente).
  • CopyTable(TableName, SourceSchema, TargetSchema, lData=false): Copia una tabla de un schema a otro con o sin datos
  • ReleaseConections(): Cierra la conexion con la base de datos
const {Mysql,SyncDb} = require('@gamalielmh921230/mysqlsync')

//se crea la conexion con la base de datos que recibira los cambios
const CnnClient = new Mysql({
    host: "localhost", 
    user: "root", 
    password: "12345",
    database: "mydb_client",
    timeout: 60000
})

//se conecta con la base de datos modelo
const CnnMaestro = new Mysql({
    host: "localhost", 
    user: "root", 
    password: "12345",
    database: "mydb_model",
    timeout: 60000
})

//se sincronizan las bases de datos
const sync = new SyncDb(CnnClient,CnnMaestro)
await sync.Sync()
await sync.ReleaseConections()

/*
    tabla en base de datos modelo
    --------------------------
    |id | campo1 | campoNuevo|
    --------------------------
    --------------------------

    tabla en base de datos cliente
    -------------
    |id | campo1|
    -------------
    | 1 | hola  |
    -------------

    resultado despues del proceso 
    en base de datos del cliente
    --------------------------
    |id | campo1 | campoNuevo|
    -------------------------- 
    | 1 | hola  |            |
    --------------------------
*/

//ejemplo para copiar una tabla
// se conecta con el primer servidor
const oCnn = new Mysql({
    host: "localhost", 
    user: "root", 
    password: "****",
    port:3306,
    timeout: 60000
})

//se copian tablas dentro de la misma conexion(pueden ser diferentes conexiones)
const sync = new SyncDb(oCnn, oCnn)
await sync.CopyTable('mytbl1','mydborigen','mydbdestino',lCopiarDatos)//se copia con datos
await sync.CopyTable('mytbl2','mydborigen','mydbdestino')//se copia sin datos   
await sync.ReleaseConections()

ConstansSync

Propiedades

  • EnumActions -> objeto con las acciones posibles en la sincronizacion. {CREATE_TABLE: 1,ALTER_TABLE: 2,DROP_TABLE: 3}