Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

202
Visualizações
Slonik - Insertar datos de retorno de fila con unión

Tengo un método para crear una fila en una base de datos que se creó con éxito, pero el problema es devolver el valor. Necesito unirme a otra tabla de forma dinámica usando slonik.

Aviso: la unión normal causa algunos problemas ya que tengo una columna en ambas tablas con el mismo nombre

aquí hay una muestra de mi código

 function createTicketAgent(connection: DatabaseTransactionConnectionType) { return async (options: CreateTicketAgentOptions) => { const id = (await connection.oneFirst( sql`SELECT nextval('ticket_agent_sequence')` )) as number; const converted = convertTicketAgentDataIn( { ...options.data, id }, options.adminId ); const data = dataToInsertSql(converted); const selection = ticketAgentSelectionSql(options.selection); const query = sql` INSERT INTO ticket_agent ${data} RETURNING ${selection} `; const result = await connection.maybeOne(query); return convertTicketAgentDataOut(result); }; } export function dataToInsertSql<T extends object>(data: T): SqlSqlTokenType { var firstItem = Array.isArray(data) ? data[0] : data; const entries = Object.entries(firstItem).sort(); const columns = entries.map(([key, value]) => key); const values = entries.map(([key, value]) => value); return sql`(${listToIdentifiersSql(columns)}) VALUES (${listToValuesSql( values )})`; } export function listToIdentifiersSql(values: string[]) { const columns = values.map((column) => sql.identifier(column.split("."))); return sql`${sql.join(columns, sql`, `)}`; } const ticketAgentSelectionSql = (selection: string[] | undefined) => selectionToSql(mapSelection(reverseMapping(mapping), selection)); export function selectionToSql<S extends SelectionSet<any>>(selection?: S) { if (selection === undefined || selection.length === 0) { return sql`*`; } const identifiers = selection.map((column) => sql.identifier(column.split(".")) ); const selectList = sql.join(identifiers, sql`, `); return sql`${selectList}`; } export function listToValuesSql(values: any[], unique: boolean = false) { let converted = values.map((value) => Array.isArray(value) ? `{${value}}` : value instanceof DateTime ? value.toSQL() : value ); if (unique) { const uniqueSet = new Set<any>(); converted.forEach((value) => { uniqueSet.add(value); }); return sql`${sql.join([...uniqueSet], sql`, `)}`; } else { return sql`${sql.join(converted, sql`, `)}`; } }
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda