Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OrderBy sur de Guid #183

Merged
merged 1 commit into from
Oct 9, 2018
Merged

OrderBy sur de Guid #183

merged 1 commit into from
Oct 9, 2018

Conversation

nfaugout-lucca
Copy link
Contributor

Le nouveau test plante à cause du .ToString()

Si on l'enlève alors le TU passe

Mais l'autre test, celui qui ne passe pas, correspond à un order by sur un Guid (uniqueidentifier en SQL) qui ne fonctionne pas en SQL, et pour cause, un "order by id asc" en SQL sur des GUID ne marche pas, même en faisant une req SQL directe.

D'où la nécessité du .ToString() en LINQ qui va convertir en string en SQL et le order by SQL fonctionne alors.

PS : si on peut corriger facilement tant mieux, sinon on peut mettre un gros warning comme quoi ça sert à rien d'essayer de trier sur des Guid => la classe OrderBy pourrait même planter explicitement si on lui demande de trier sur des Guid, c'est une alternative possible.

@nfaugout-lucca
Copy link
Contributor Author

@Poltuu tu pourras regarder cette PR qui met en évidence un pb sur le OrderBy sur les Guid ?

Soit on les interdit, soit on corrige le pb (via le .ToString( ) ou autre alternative)

@rducom
Copy link
Contributor

rducom commented Oct 8, 2018

En fait ça n'a pas de sens de faire un order by sur des guids, car leur valeur est random.
Ce qu'il faut c'est lors de la génération d'une clause d'order by par défault, si le type Id est un Guid, alors lever une exception en demandant au dev d'override la méthode d'order by par default pour le type TEntity donné. Ainsi le dev pourra choisir une autre propriété.

@rducom
Copy link
Contributor

rducom commented Oct 8, 2018

Linked : #175

@Poltuu
Copy link
Contributor

Poltuu commented Oct 8, 2018

je ne vois pas l'intérêt d'interdire de trier par guid, je peux même imaginer des cas ou ça peut être utile.
Par exemple, si une foreign key est de type guid, ce ordre by fait office de groupby sur le retour d'api, et me permet de voir qui est associé à quoi da manière fort pratique (utile pour du debug donc).

Je vais surtout essayer de faire en sorte que le truc fonctionne en natif

Poltuu
Poltuu previously approved these changes Oct 8, 2018
Copy link
Contributor

@Poltuu Poltuu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

j'ai fixé:

  • la possibilité de rajouter un TOString() dans un orderby
  • le orderby natif sur guid ou guid? qui rajoute automatiquement ce .ToString()

@Poltuu Poltuu added this to the v3.0 milestone Oct 8, 2018
@codecov-io
Copy link

codecov-io commented Oct 8, 2018

Codecov Report

Merging #183 into master will increase coverage by 0.2%.
The diff coverage is 93.75%.

Impacted file tree graph

@@            Coverage Diff            @@
##           master     #183     +/-   ##
=========================================
+ Coverage   71.65%   71.86%   +0.2%     
=========================================
  Files         113      113             
  Lines        2844     2851      +7     
  Branches      291      292      +1     
=========================================
+ Hits         2038     2049     +11     
+ Misses        682      678      -4     
  Partials      124      124
Impacted Files Coverage Δ
Web/RDD.Web/Querying/OrderByParser.cs 10.34% <0%> (ø) ⬆️
Domain/RDD.Domain/Models/Querying/OrderBy.cs 100% <100%> (+5.55%) ⬆️
Infra/RDD.Infra/Storage/ReadOnlyRepository.cs 89.23% <0%> (+4.61%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update be94512...a2a04f9. Read the comment docs.

@rducom
Copy link
Contributor

rducom commented Oct 8, 2018

Par exemple, si une foreign key est de type guid, ce ordre by fait office de groupby sur le retour d'api, et me permet de voir qui est associé à quoi da manière fort pratique (utile pour du debug donc).

J'ai pas du tout mais alors pas du tout compris 😄

@Poltuu
Copy link
Contributor

Poltuu commented Oct 8, 2018

api/users?orderby=managerId,asc

pour voir en gros qui est managé par la même personne. Dans certains cas, c'est très pratique en debug

@nfaugout-lucca nfaugout-lucca changed the title DIP OrderBy sur de Guid Oct 9, 2018
@nfaugout-lucca
Copy link
Contributor Author

@Poltuu je te laisse prendre la main sur cette PR

@Poltuu Poltuu merged commit b7ae7b1 into master Oct 9, 2018
@Poltuu Poltuu deleted the FIX.#174 branch October 9, 2018 09:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants