Skip to content

gamalielmendez/mysqlSync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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}

About

clase para sincronizar dos bases de datos

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published