« first day (1897 days earlier)      last day (578 days later) » 
00:00 - 18:0019:00 - 23:00

7:00 PM
Buenas
@fredyfx como vamos?
Alguno por acá con conocimientos en SQL?
@PatricioMoracho Don Patricio, creo que usted es un top-user
👀
 
@JheymanMejia Si puedo ayudarte, con gusto
 
Gracias, disculpa arrobarte por acá sólo para pedirte colaboracion
Resulta que necesito crear un trigger en MySQL
trigger de actualizacion
CREATE TRIGGER tic_bd_compus_BU BEFORE UPDATE ON tic_bd_compus FOR EACH ROW
INSERT INTO tic_bd_info (ant_centro, ant_usuario, nuevo_centro, nuevo_usuario, f_registro)
VALUES (OLD.centro_operacion, OLD.usuario, NEW.centro_operacion, NEW.usuario, NOW())
así como lo ves, funciona
en la tabla tic_bd_compus tengo varias columnas o campos
necesito que el trigger se cumpla sólo si el update se realiza en dos determinados campos (centro_operacion y usuario)
intenté con esto
-
CREATE TRIGGER tic_bd_compus_BU BEFORE UPDATE ON tic_bd_compus FOR EACH ROW
AS IF UPDATE (centro_operacion, usuario)
BEGIN
INSERT INTO tic_bd_info (ant_centro, ant_usuario, nuevo_centro, nuevo_usuario, f_registro)
VALUES (OLD.centro_operacion, OLD.usuario, NEW.centro_operacion, NEW.usuario, NOW())
END
-
pero creo que estoy inventando sintaxis
pues claramente no funciona
es posible hacer esto? creo que se puede con 1 sola columna, y no sé si la instruccion AS IF sea exclusiva de SQLServer, lo dudo
o no sé
 
y si controlas dentro del trigger si los valores para esos campos son iguales para new y old?
segun la documentacion, estas inventando sintaxis...
 
No soy muy experto en mysql, pero en sql server la sintaxis es correcta, lo que veo es que el trigger es before update, no sé si eso tiene algo que ver.
Digo, todavía no actualizo nada, IF UPDATE (centro_operacion, usuario), debe funcionar igual?
 
7:18 PM
@gbianchi lo sospeché jajaja
@PatricioMoracho si señor, el primer trigger funciona
@gbianchi se puede hacer?
 
Nada, en sql-server esa es la forma de saber si se está tocando una columna. En mysql más bien como dice gonzalo:
 
creo que voy a publicar la pregunta
para no ocupar mucho espacio por acá
estuve buscando info y no encontré mucha, a lo mejor le sirve al sitio
 
 IF NEW.columna <> OLD.columna THEN
 
@PatricioMoracho vale, eso creo que puede funcionar
voy a redactarla y ya les comparto por acá
muchas gracias por su atención caballeros
 
de nada.. pasa por caja que ahi seguis el tramite...
 
7:21 PM
jaajajaja ok
0
Q: Trigger que se ejecute sólo al actualizar determinadas columnas o campos

Jheyman MejiaTengo el siguiente trigger en SQL con MySQL v4.8 como SGBD CREATE TRIGGER tic_bd_compus_bu BEFORE UPDATE ON tic_bd_compus FOR EACH row INSERT INTO tic_bd_info (ant_centro, ant_usuario, nuevo_centro, nuevo_usuario, ...

@gbianchi @PatricioMoracho
por si tienen un espacio y le echan una ojeada
 
@JheymanMejia dale solucionalo y contestala vos mismo..
y por dios
 
Igualmente no está de más decir que el trigger se ejecuta siempre, lo que se condiciona es lo que está dentro de él.
 
SACA PHPMYADMIN de ahi!!!!
que eso es una ide!!! no tiene nada que ver con la base de datos...
que si me conecto a mysql desde dbbeaver no es el mismo problema?
que mania que tienen en los problemas de base de datos agregar el programa con el cual se conectan a la misma...
 
Parte del problema es entender dónde esta el problema
 
me pone peor cuando escriben... Dentro de mi base de datos en phpmyadmin... como si la base fuera phpmyadmin....
Hace parecer que no entienden nada de nada de lo que estan haciendo...
 
7:32 PM
@JheymanMejia con ganas de darle una patada espartana a un bug bien raro
 
@gbianchi perdon perdon, primera pregunta con SQL
ya la quité
@PatricioMoracho gracias, no sabia esto
@gbianchi jajaja no tampoco así
@fredyfx jajajajaja siemppre ando uno con eso en mente
 
escenario
Tienes una variable de página, que es un array vacío
en un método, reseteas esa variable para que sea vacía
en ese mismo método, de acuerdo a la lógica del negocio, añades valores a ese array
acto seguido, ejecutas una rutina con los elementos de dicho array
this.listaElementos = null;
this.listaElementos = [];
Si le das un console log a this.listaElementos, deberías tener vacío, ¿cierto?
si le das un this.listaElementos.length, deberías tener un flamante cero, como en aquellos exámenes de cálculo matemático de tiempos universitarios
sucede que:
al darle un console log al this.listaElementos, muestra los elementos (bug)
y en la siguiente línea donde esa MISMA variable es llamada para que muestre su LENGTH, este genera un CERO
 
7:56 PM
Hey
Debí conectarme más temprano, necesito a un master en Typescript. :(
 
8:15 PM
o/
master master no, pero ahí le voy
 
8:54 PM
@fredyfx hey
A ver, estoy creando un factory
¿Será que hago la pregunta en el sitio? Sería mi primera pregunta. Pero dado que es de MongoDB, y yo soy el que más respuestas tengo en esa etiqueta, pues sería un poco raro. XD
En fin, a ver si me explico
Estoy creando una app multi-tenant. Separando cada tenant en una Base de Datos diferente.
Estoy usando Mongoose como ODM para MongoDB. (Facilita muchas cosas)
En una app sencilla y corriente, los modelos de datos se crean a partir de esquemas, y están atados a la conexión por defecto que establece Mongoose.
Pero en una aplicación multi base de datos, los modelos deben generarse al momento de selccionar la base de datos a la que vas a conectarte. Para que queden atados a dicha conexión.
 
¿Y dónde va TS?
 
@fredyfx allí voy.
@fredyfx resulta que para no escribir 30 declaraciones de modelos, quiero escribir una fábrica. Que reciba parámetros y me devuelva un modelo. Como todas las DB tienen la misma estructura, basta con definir una lista de los esquemas y nombres de modelos, pasárselos a una fábrica y que devuelva el modelo adecuado.
La cosa es que no logro escribir correctamente la función.
Supongamos que implemento lo siguiente:
export function getModel(
  connection: Connection,
  schema: Schema,
  modelName: string
): Model {
  const model: Model = connection.model(modelName, schema);
  return model;
}
Se ve en principio, verdad?
 
9:09 PM
afirmativo
 
Pero me da un error:
Generic type 'Model<T>' requires 1 type argument(s).
 
const model: Model = new connection.model(modelName, schema);
¿Intentaste con un new?
 
No es un constructor
Usualmente, una sóla conexión impleca crear el modelo así:
const IModel extends mongoose.Document{
  attr: string,
  secondattr: number
}

const ModelSchema: Schema = new mongoose.Schema({
  attr: String,
  secondattr: Number
});

const MiModelo: Model<IModel> = mongoose.model("MiModelo", ModelSchema);
Puedes observar que el método model no es un constructor.
 
ya veo
 
Sé que tengo que usar un Generic, pero no logro dar con la tecla
 
9:20 PM
lanza la pregunta en el sitio para revisar
 
@fredyfx estoy revisando el código fuente de Mongoose, esa función llamada model hace exactamente lo que necesito, sólo debo replicarla. XD
 
XD!!!!!!
eeepico~
 
Lo bueno es que al menos sé donde buscar. XD
 
9:34 PM
de leyenda :D
yo ahorita ando con un problema bien particular
si tengo una variable que es un arreglo vacío
y hago un console log a dicha variable, debería lanzar vacío
sin embargo, hay datos
si hago otro console log del length de esa variable que está lanzando los datos
muestra CERO
o.o
 
Raro
Yo había llegado solito a esta primera implementación:
export function getModel<T extends Document>(
  connection: Connection,
  schema: Schema,
  modelName: string
): Model<T> {
  const model: Model<T> = connection.model(modelName, schema);
  return model;
}
Pero eso me devuelve el siguiente error:
Type 'Model<Document<any>>' is not assignable to type 'Model<T>'.
  The types returned by 'count(...).$where(...).exec()' are incompatible between these types.
    Type 'Promise<Document<any>[]>' is not assignable to type 'Promise<T[]>'.
      Type 'Document<any>[]' is not assignable to type 'T[]'.
 
GG WP
 
Así que me fui a la definición de tipos de Mongoose, y claro, me cae el balde de agua encima:
model<T extends Document>(name: string, schema?: Schema<T>, collection?: string): Model<T>;
Como puedes observar, el argumento Schema es de tipo genérico
Y es lo que me faltaba a mi.
Puse el <T> en el tipo de Schema en mi función, y todos los errores desaparecieron.
XD
 
es como los generics en C#
es más
 
Tal cual
 
9:42 PM
considera que TS es Made In Microsoft
 
Pero me destrozó toda la tarde esto
Al fin puedo dormir.
XD
Quedó así mi factoría:
/**
 * Returns a Model from Schema on a given connection
 *
 * @param {connection: Connection, schema: Schema<T>, modelName: string }
 * Receives: Mongoose Connection object, Mongoose Schema object and model name
 * @returns {model: Model}
 * Returns: Mongoose Model object attached to the specified connection.
 */
export function getModel<T extends Document>(
  connection: Connection,
  schema: Schema<T>,
  modelName: string
): Model<T> {
  const model: Model<T> = connection.model(modelName, schema);
Eso hará que crear un conjunto de modelos sea sólo cosa de pasar un callback a un forEach. XD
Pero primero la prueba (Test Unitario necesario)
@fredyfx crees que sea un tema de asincronía?
Me refiero a tu Array con datos pero length cero
 
imposible, el único lugar donde se añade esos datos al array está después
 
@fredyfx pues no comprendo. Tienes un Array con length cero, y le haces un console.log() y muestra info?
O sea, qué pasa si metes:
 
tal cual
si le doy un this.listaElementos = null;
seguido de un this.listaElementos = [];
al darle un console.log(this.listaElementos); //lanza la lista de elementos (BUG)
después, si hago un console.log(this.listaElementos.length); //aqui da un CERO
lo cual no tiene sentido
 
if(!this.listaElementos.length) {
  console.log(this.listaElementos);
}
 
9:51 PM
es como si el código estuviera usando el recurso Chewbacca de SouthPark
 
pues muy raro.
Pues tampoco funciona mi método, ahora al asignarlo da este error:
Type 'Model<Document<any>>' is not assignable to type 'Model<IEstudiante>'.
  The types returned by 'count(...).$where(...).exec()' are incompatible between these types.
    Type 'Promise<Document<any>[]>' is not assignable to type 'Promise<IEstudiante[]>'.
      Type 'Document<any>[]' is not assignable to type 'IEstudiante[]'.
 
O.O
 
A ver, usaré otra forma
 
acabo de usar tu código
ha mostrado la lista que en teoría debería ser vacía
O.O
 
@fredyfx jajaja, eso pasa por usar Windows. Acaso crees que las pantallas azules salen de arrays vacíos de verdad?
Vale, estaba llamando a la función así:
const Estudiante: Model<IEstudiante> = getModel(conn, EstudianteSchema, "Estudiante");
Eso me genera el siguiente error:
Type 'Model<Document<any>>' is not assignable to type 'Model<IEstudiante>'.
  The types returned by 'count(...).$where(...).exec()' are incompatible between these types.
    Type 'Promise<Document<any>[]>' is not assignable to type 'Promise<IEstudiante[]>'.
      Type 'Document<any>[]' is not assignable to type 'IEstudiante[]'.
La llamo así, porque así se hace para el caso del modelo con conexión única.
const Estudiante: Model<IEstudiante> = mongoose.model("Estudiante", EstudianteSchema);
Mi función debería hacer lo mismo, pero no lo hace. :(
JOJOJOJO
Ahora si
La llamada quedó así:
const Estudiante: Model<Document<IEstudiante>> = getModel(
      conn,
      EstudianteSchema,
      "Estudiante"
    );
Pero no estoy seguro de que eso sea así
A ver, la interfaz IEstudiante extiende de Document
En teoría no basta con Model<IEstudiante>?
 
10:11 PM
regreso, voy por el almuerzo
algo se me ha de ocurrir
 
Vaya y venga, yo voy a dormir ya. Los tests dieron esto:
  Connection
Successfully connected to database common
    ✓ Return a connection instance for common (673ms)
Successfully connected to database tenant1
    ✓ Return a connection instance for tenant1 (492ms)
    ✓ Must use a previous connection from connectionPools
Successfully connected to database tenant4
    ✓ Debe crear un documento de estudiante en la base de datos tenant1 (767ms)
Attempting disconnection from database common
Attempting disconnection from database common
Attempting disconnection from database tenant4
 
vaya hombre, felicidades :D
 
@fredyfx por cierto el próximo fin de semana me inscribo en tu curso. Allí te daré guerra. Saludos
 
Hoy me ha saltado un aviso de que tengo muchos reportes rechazados, y veo los reportes que son, y de 7 hay 5 que no hay ni por donde cogerlos
que raro
Bueno perdón, cambio de opinión
realmente los siete son claramente reportes que considero que están bien hechos sin ningún tipo de duda
 
10:34 PM
@MauricioContreras aaaawwww, que cheeere :D
te garantizo que te va a gustar
Muchas gracias :D
 
compañeros yo otra vez, resulta que como me introduzco en el mundo del backend, escucho mucho la palabra servidor.
 
sencillo, comienza por usar lenguajes del lado del servidor
 
y lo comprendo un poco creo que es un software que recibe ciertas peticiones
 
Java, python, php, C#, F#, VB .net
Go, Rust
 
pero cual es la relacion entre el ya mencionado y este?
 
10:39 PM
?
vamos por partes
 
ok , esta cargando la imagen
:)
 
HTML + CSS + JS = del lado del cliente (un navegador web)
cualquier lenguaje que se va a ejecutar en el servidor (lenguaje de backend)
 
ya cargo sensei.
 
Ahora JS juega en ambos mundos. No lo olviden.
 
eso tambien es un servidor?
 
10:41 PM
aunque C# con Blazor también juega del lado del cliente o.o
 
disculpen la molestia, ademas cuando veo entrevistas y documentales de facebook y google veo de estas cosas, pero mas grandes
@fredyfx gracias, si entiendo un poco el concepto, protocolo http algo asi seguire buscando
:)
 
el protocolo http es una manera de enviar información entre un cliente y un servidor
si deseas aprender bien sobre servicios web, aprende los fundamentos sobre verbos HTTP
 
ok lo capto y me lo apunto, pero que es eso?(la imagen que subi) tambien es un servidor? :(
 
ni ida
ni idea*
quizás sea un servidor
los servidores pueden ser en torres, o también horizontales que van en racks
 
gracias amigo, me da curiosidad este tema, cuando escribes "servidores de google o amazon" salen estas torres alumbrando de colores
gracias ariato :
 
10:55 PM
hay micro servidores, como una raspberry pi
 
esta otra me da mas curiosidad,
ya no molesto mas adios.
 
en lo que he estado revisando el chat, nunca he visto que alguien te haya dicho algo referente a que "molestas"
nos vemos
 
00:00 - 18:0019:00 - 23:00

« first day (1897 days earlier)      last day (578 days later) »