Fix inconsistent NULL ordering with PGSQL <-> MySQL

This commit is contained in:
Tomaž Jerman
2022-02-07 09:21:31 +01:00
parent 6777576948
commit 38a32ddeb3
24 changed files with 27 additions and 24 deletions
+1 -1
View File
@@ -116,7 +116,7 @@ func (s Store) {{ toggleExport .Search.Export "Search" $.Types.Plural }}(ctx con
{{ else if $.Search.EnableSorting }}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortable{{ export $.Types.Singular }}Columns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortable{{ export $.Types.Singular }}Columns(), s.Config().SqlSortHandler); err != nil {
return err
}
{{ end }}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchApigwFilters(ctx context.Context, f types.ApigwFilterFilter
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableApigwFilterColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableApigwFilterColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchApigwRoutes(ctx context.Context, f types.ApigwRouteFilter)
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableApigwRouteColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableApigwRouteColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchApplications(ctx context.Context, f types.ApplicationFilter
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableApplicationColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableApplicationColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchAuthClients(ctx context.Context, f types.AuthClientFilter)
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableAuthClientColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableAuthClientColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchAutomationSessions(ctx context.Context, f types.SessionFilt
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableAutomationSessionColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableAutomationSessionColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchAutomationTriggers(ctx context.Context, f types.TriggerFilt
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableAutomationTriggerColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableAutomationTriggerColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchAutomationWorkflows(ctx context.Context, f types.WorkflowFi
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableAutomationWorkflowColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableAutomationWorkflowColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchComposeCharts(ctx context.Context, f types.ChartFilter) (ty
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableComposeChartColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableComposeChartColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchComposeModules(ctx context.Context, f types.ModuleFilter) (
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableComposeModuleColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableComposeModuleColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchComposeNamespaces(ctx context.Context, f types.NamespaceFil
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableComposeNamespaceColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableComposeNamespaceColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchComposePages(ctx context.Context, f types.PageFilter) (type
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableComposePageColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableComposePageColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchFederationExposedModules(ctx context.Context, f types.Expos
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableFederationExposedModuleColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableFederationExposedModuleColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -85,7 +85,7 @@ func (s Store) SearchFederationModuleMappings(ctx context.Context, f types.Modul
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableFederationModuleMappingColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableFederationModuleMappingColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchFederationNodesSyncs(ctx context.Context, f types.NodeSyncF
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableFederationNodesSyncColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableFederationNodesSyncColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchFederationSharedModules(ctx context.Context, f types.Shared
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableFederationSharedModuleColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableFederationSharedModuleColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchQueueMessages(ctx context.Context, f types.QueueMessageFilt
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableQueueMessageColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableQueueMessageColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+4 -1
View File
@@ -423,7 +423,7 @@ func BuildCursor(q squirrel.SelectBuilder, cursor *filter.PagingCursor) squirrel
return q
}
func setOrderBy(q squirrel.SelectBuilder, sort filter.SortExprSet, sortable map[string]string) (squirrel.SelectBuilder, error) {
func setOrderBy(q squirrel.SelectBuilder, sort filter.SortExprSet, sortable map[string]string, sortHandler func(exp string, desc bool) string) (squirrel.SelectBuilder, error) {
var (
col string
has bool
@@ -445,6 +445,9 @@ func setOrderBy(q squirrel.SelectBuilder, sort filter.SortExprSet, sortable map[
if sort[i].Descending {
sqlSort[i] += " DESC"
}
// Let DB specific sort handler determine the appropriate syntax
sqlSort[i] = sortHandler(sqlSort[i], sort[i].Descending)
}
return q.OrderBy(sqlSort...), nil
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchReminders(ctx context.Context, f types.ReminderFilter) (typ
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableReminderColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableReminderColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchReports(ctx context.Context, f types.ReportFilter) (types.R
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableReportColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableReportColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchResourceTranslations(ctx context.Context, f types.ResourceT
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableResourceTranslationColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableResourceTranslationColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchRoles(ctx context.Context, f types.RoleFilter) (types.RoleS
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableRoleColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableRoleColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchTemplates(ctx context.Context, f types.TemplateFilter) (typ
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableTemplateColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableTemplateColumns(), s.Config().SqlSortHandler); err != nil {
return err
}
+1 -1
View File
@@ -73,7 +73,7 @@ func (s Store) SearchUsers(ctx context.Context, f types.UserFilter) (types.UserS
}
// Apply sorting expr from filter to query
if q, err = setOrderBy(q, sort, s.sortableUserColumns()); err != nil {
if q, err = setOrderBy(q, sort, s.sortableUserColumns(), s.Config().SqlSortHandler); err != nil {
return err
}