Typesafe dynamic filtering/ordering/paging
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
El issue no menciona archivos ni pruebas del repositorio. Empieza por localizar la ruta del tipo generado por SQL... descrita aquí y rastrear cómo se exponen las columnas de salida. Se considera completado cuando las consultas elegibles de un solo SELECT admiten valores By con seguridad de tipos, ordenación, paginación y un comando que conserva las cláusulas aplicadas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Right now there is no way to dynamically order queries.
This makes the library unsuitable for applications that let the user sort a paged table of records.
That's a lot of applications!
This should be solvable without giving up type safety. Here's the design I have in mind:
Any command that consists of a single SELECT statement which is not known to be a single-row SELECT should be dynamically orderable.
e.g.
type MyQuery = SQL<"select Column1, 1+1 as Column2 from SomeTable">
This means that it gets the following extra stuff in its generated type:
- A nested type
MyQuery.Bywith a private constructor and an overrided ToString(). - Static getters
MyQuery.By.Column1andMyQuery.By.Column2, which return instances ofMyQuery.By - A static method
MyQuery.By.OfString("Column1")which checks that the passed string is one of the statically known output column names.MyQuery.By.OfString(MyQuery.By.Column2.ToString())should work. - A static
OrderBymethod taking aMyQuery.Byand a DUAscending|Descendingand returning aMyQuery.OrderedQuery MyQuery.OrderedQueryhas an instance methodThenBytaking another by+direction,Pagetaking limit+offsetMyQuery.OrderedQueryhas an instanceCommandmethod which is like the regularMyQuery.Command(param1 = ...)method, but includes the orderings applied so far
Hypothetical usage:
type MyQuery = SQL<"select Column1, 1+1 as Column2 from SomeTable where Name like @name">
let example (conn : ConnectionContext) =
MyQuery
.OrderBy(MyQuery.By.Column1, Ascending)
.ThenBy(MyQuery.By.Column2, Descending)
.Page(25, 50)
.Command(name = "%a%")
.Execute(conn)
I think it would be OK to limit to one ThenBy clause. Orderings more complicated than that don't make much sense to generate dynamically.
Thoughts?
- Lenguaje dominante
- F#
- Estrellas
- 680
- Forks
- 23
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fsprojects/Rezoom.SQL
-
fsprojects onboarding Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#57 · 1 comentario ·
-
Dacpac support info Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#56 · 1 comentario ·
-
Create / Drop Schema support Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
fsprojects/Rezoom.SQL#52 · 1 comentario ·
-
Support for Geography types Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
fsprojects/Rezoom.SQL#50 ·
-
Data type/column type: array Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
fsprojects/Rezoom.SQL#48 · 3 comentarios ·
Todos los issues de fsprojects/Rezoom.SQL
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
objectionary/eo#8923 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Abiertocoarray
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
internal.h中,漏掉了1个定义。 Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100