Allow developers to extend/create their own the OnConflict clause

Abierto
#730 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
fsharp, postgresql
Área
databases

Línea de trabajo

Comienza en src/SQLProvider.Runtime/Providers.Postgresql.fs alrededor de la línea 516 e inspecciona la unión discriminada OnConflict y su generación de SQL. Compara cómo gestionan los demás providers el comportamiento ante conflictos antes de decidir el alcance de la extensión. Se considera terminado cuando el comportamiento personalizado de ON CONFLICT puede resolver conflictos de índices únicos que no son claves primarias sin romper Throw, Update ni DoNothing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

https://github.com/fsprojects/SQLProvider/blob/8afaad203efe2b3b900a2ad1a6d8a35d66ebe40a/src/SQLProvider.Runtime/Providers.Postgresql.fs#L516

Is there any way to create / use a custom "ON CONFLICT" clause? It looks like this should be easily extendible by adding another case to the OnConflict discriminated union:

        match entity.OnConflict with
        | Throw -> ()
        | Update ->
          ~~(sprintf " ON CONFLICT (%s) DO UPDATE SET %s "                
                (String.Join(",", pk |> List.map (sprintf "\"%s\"")))
                (String.Join(",", columnNamesWithValues |> List.map(fun (c,p) -> sprintf "\"%s\" = %s" c p.ParameterName ) )))
        | DoNothing ->
          ~~(sprintf " ON CONFLICT DO NOTHING ")
        | Custom clause -> ~~(sprintf clause)

I have a postgres database with tables that contain unique indices that aren't a primary key (created via Rails migrations). I'd like to be able to watch out for conflicts on these columns and update other columns as necessary.


edit
If you think this would be a desired feature, I'd be happy to submit a pull request. I'd need/want your help for other providers but I could at least kick it off.

Lenguaje dominante
F#
Estrellas
627
Forks
147
Merge medio
2 h 2 min
PR fusionados (30 d)
1

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de fsprojects/SQLProvider

Todos los issues de fsprojects/SQLProvider

Issues similares

Más issues de Databases

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.