go-duck-cli 1.4.18 → 1.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "go-duck-cli",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.19",
|
|
4
4
|
"description": "The Ultimate Evolutionary Go Microservice Scaffolder.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"generator",
|
|
35
35
|
"go-duck"
|
|
36
36
|
],
|
|
37
|
-
|
|
38
37
|
"repository": {
|
|
39
38
|
"type": "git",
|
|
40
39
|
"url": "git+https://github.com/heavenscode/go-duck.git"
|
|
@@ -4,6 +4,7 @@ import (
|
|
|
4
4
|
"net/http"
|
|
5
5
|
"strconv"
|
|
6
6
|
"strings"
|
|
7
|
+
"regexp"
|
|
7
8
|
{{#if isSearchable}}
|
|
8
9
|
"context"
|
|
9
10
|
{{/if}}
|
|
@@ -215,10 +216,10 @@ func (ctrl *{{capitalize name}}Controller) GetAll(c *gin.Context) {
|
|
|
215
216
|
db, _ := c.Get("tenantMongoDB")
|
|
216
217
|
tenantDB := db.(*mongo.Database)
|
|
217
218
|
|
|
218
|
-
// PostgREST-lite Filter Translation
|
|
219
|
+
// PostgREST-lite Filter Translation
|
|
219
220
|
filter := bson.M{}
|
|
220
221
|
for k, v := range c.Request.URL.Query() {
|
|
221
|
-
if k != "page" && k != "size" && k != "federated" {
|
|
222
|
+
if k != "page" && k != "size" && k != "federated" && k != "sort" && k != "eager" {
|
|
222
223
|
filter[k] = v[0]
|
|
223
224
|
}
|
|
224
225
|
}
|
|
@@ -298,6 +299,30 @@ func (ctrl *{{capitalize name}}Controller) GetAll(c *gin.Context) {
|
|
|
298
299
|
|
|
299
300
|
var entities []models.{{capitalize name}}
|
|
300
301
|
query := tenantDB.WithContext(ctx)
|
|
302
|
+
|
|
303
|
+
// Dynamic Eager Loading
|
|
304
|
+
if c.DefaultQuery("eager", "false") == "true" {
|
|
305
|
+
{{#each relationships}}
|
|
306
|
+
{{#if (eq from.entity ../name)}}
|
|
307
|
+
query = query.Preload("{{capitalize to.entity}}")
|
|
308
|
+
{{else}}
|
|
309
|
+
query = query.Preload("{{capitalize from.entity}}")
|
|
310
|
+
{{/if}}
|
|
311
|
+
{{/each}}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Dynamic Filtering (JPA-style)
|
|
315
|
+
for k, v := range c.Request.URL.Query() {
|
|
316
|
+
if k != "page" && k != "size" && k != "federated" && k != "sort" && k != "eager" {
|
|
317
|
+
// Convert camelCase to snake_case for PostgreSQL
|
|
318
|
+
var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)")
|
|
319
|
+
var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])")
|
|
320
|
+
snake := matchFirstCap.ReplaceAllString(k, "${1}_${2}")
|
|
321
|
+
snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}")
|
|
322
|
+
query = query.Where(strings.ToLower(snake)+" = ?", v[0])
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
301
326
|
if sortParam != "" {
|
|
302
327
|
query = query.Order(strings.ReplaceAll(sortParam, ",", " "))
|
|
303
328
|
}
|