go-on-rails 0.0.4 → 0.0.5
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/generators/gor/templates/gor_model.go.erb +97 -53
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1806b545b4bae0d8816bc273634b32ceee30292
|
4
|
+
data.tar.gz: 39488fbb5332721fa236a551bdb7677dd8d3655c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26186a39dac4d17d4de99dda4c01c009bbb6b8969f9035fef7a1427fd2187807a073ade78f5863d4a7b473e4e622eb9786b68e1ffcf466d903435a66fa4d3fb6
|
7
|
+
data.tar.gz: c638a2daad0aeb2527edd25e2e249c27a41ad2d06aa60d16113d87c03ed34c31997505c6c91124352c7bb26a2ce33aea2dbb8c2f4d3c9101ebf980c39289b813
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
<%- param_name_plural = table_name = @model_name.underscore.pluralize -%>
|
2
2
|
<%- model_name_underscore = @model_name.underscore -%>
|
3
3
|
<%- col_names = @struct_info[:col_names] -%>
|
4
|
+
<%- has_assoc = !@struct_info[:assoc_info][:has_many].empty? || !@struct_info[:assoc_info][:has_one].empty? -%>
|
4
5
|
// The file is generated by go-on-rails, a Rails generator gem:
|
5
6
|
// https://rubygems.org/gems/go-on-rails
|
6
7
|
// Or on Github: https://github.com/goonr/go-on-rails
|
@@ -102,11 +103,14 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
102
103
|
log.Println("No associated fields ard specified")
|
103
104
|
return var_<%= param_name_plural %>, err
|
104
105
|
}
|
106
|
+
if len(var_<%= param_name_plural %>) <= 0 {
|
107
|
+
return nil, errors.New("No results available")
|
108
|
+
}
|
105
109
|
ids := make([]interface{}, len(var_<%= param_name_plural %>))
|
106
110
|
for _, v := range var_<%= param_name_plural %> {
|
107
111
|
ids = append(ids, interface{}(v.Id))
|
108
112
|
}
|
109
|
-
<%-
|
113
|
+
<%- if has_assoc -%>
|
110
114
|
idsHolder := strings.Repeat(",?", len(ids)-1)
|
111
115
|
for _, assoc := range assocs {
|
112
116
|
switch assoc {
|
@@ -125,7 +129,7 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
125
129
|
continue
|
126
130
|
}
|
127
131
|
for _, vv := range var_<%= v[:class_name].underscore.pluralize %> {
|
128
|
-
for
|
132
|
+
for i, vvv := range var_<%= param_name_plural %> {
|
129
133
|
<%- if v[:foreign_key] -%>
|
130
134
|
if vv.<%= v[:foreign_key].camelize %> == vvv.Id {
|
131
135
|
vvv.<%= k %> = append(vvv.<%= k %>, vv)
|
@@ -135,6 +139,7 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
135
139
|
vvv.<%= k %> = append(vvv.<%= k %>, vv)
|
136
140
|
}
|
137
141
|
<%- end -%>
|
142
|
+
var_<%= param_name_plural %>[i].<%= k %> = vvv.<%= k %>
|
138
143
|
}
|
139
144
|
}
|
140
145
|
<%- end -%>
|
@@ -142,7 +147,7 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
142
147
|
<%- unless @struct_info[:assoc_info][:has_one].empty? -%>
|
143
148
|
<%- has_one = @struct_info[:assoc_info][:has_one] -%>
|
144
149
|
<%- has_one.each do |k, v| -%>
|
145
|
-
case "<%= k %>":
|
150
|
+
case "<%= k.underscore %>":
|
146
151
|
<%- if v[:foreign_key] -%>
|
147
152
|
where := fmt.Sprintf("<%= v[:foreign_key] %> IN (?%s)", idsHolder)
|
148
153
|
<%- else -%>
|
@@ -154,7 +159,7 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
154
159
|
continue
|
155
160
|
}
|
156
161
|
for _, vv := range var_<%= v[:class_name].underscore.pluralize %> {
|
157
|
-
for
|
162
|
+
for i, vvv := range var_<%= param_name_plural %> {
|
158
163
|
<%- if v[:foreign_key] -%>
|
159
164
|
if vv.<%= v[:foreign_key].camelize %> == vvv.Id {
|
160
165
|
vvv.<%= k %> = vv
|
@@ -164,6 +169,7 @@ func <%= @model_name %>IncludesWhere(assocs []string, sql string, args ...interf
|
|
164
169
|
vvv.<%= k %> = vv
|
165
170
|
}
|
166
171
|
<%- end -%>
|
172
|
+
var_<%= param_name_plural %>[i].<%= k %> = vvv.<%= k %>
|
167
173
|
}
|
168
174
|
}
|
169
175
|
<%- end -%>
|
@@ -400,40 +406,10 @@ func Destroy<%= @model_name %>(id int64) error {
|
|
400
406
|
if err != nil {
|
401
407
|
return err
|
402
408
|
}
|
403
|
-
<%-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
<%- if opts.key? :dependent -%>
|
408
|
-
<%- if opts[:through] -%>
|
409
|
-
<%- case opts[:through] -%>
|
410
|
-
<%- when :destroy, :delete_all -%>
|
411
|
-
<%= opts[:class_name].underscore %>_ids, err := <%= opts[:through].to_s.singularize.camelize %>IntCol("<%= opts[:class_name].underscore %>_id", "<%= model_name_underscore %>_id = ?", var_<%= model_name_underscore %>.Id)
|
412
|
-
if err != nil {
|
413
|
-
return err
|
414
|
-
}
|
415
|
-
_, err = Destroy<%= opts[:class_name].pluralize %>(<%= opts[:class_name].underscore %>_ids...)
|
416
|
-
if err != nil {
|
417
|
-
return err
|
418
|
-
}
|
419
|
-
_, err = Destroy<%= opts[:through].to_s.pluralize.camelize %>Where("<%= model_name_underscore %>_id = ?", var_<%= model_name_underscore %>.Id)
|
420
|
-
if err != nil {
|
421
|
-
return err
|
422
|
-
}
|
423
|
-
<%- when :nullify -%>
|
424
|
-
<%#- FIXME: Need a DeleteAssociation func -%>
|
425
|
-
<%- end -%>
|
426
|
-
<%- else -%>
|
427
|
-
<%- if opts.key? :foreign_key -%>
|
428
|
-
Destroy<%= opts[:class_name].pluralize %>Where("<%= opts[:foreign_key] %> = ?", id)
|
429
|
-
<%- else -%>
|
430
|
-
Destroy<%= opts[:class_name].pluralize %>Where("<%= model_name_underscore %>_id = ?", id)
|
431
|
-
<%- end -%>
|
432
|
-
<%- end -%>
|
433
|
-
<%- end -%>
|
434
|
-
<%- end -%>
|
435
|
-
<%- end -%>
|
436
|
-
<%- end -%>
|
409
|
+
<%- if has_assoc -%>
|
410
|
+
// not care if exec properly temporarily
|
411
|
+
destroy<%= @model_name %>Associations(id)
|
412
|
+
<%- end -%>
|
437
413
|
return nil
|
438
414
|
}
|
439
415
|
|
@@ -458,21 +434,9 @@ func Destroy<%= @model_name.pluralize %>(ids ...int64) (int64, error) {
|
|
458
434
|
if err != nil {
|
459
435
|
return 0, err
|
460
436
|
}
|
461
|
-
<%-
|
462
|
-
|
463
|
-
|
464
|
-
<%- ass_cols.each_value do |opts| -%>
|
465
|
-
<%- if opts.key? :dependent -%>
|
466
|
-
<%- if opts.key? :foreign_key -%>
|
467
|
-
where := fmt.Sprintf("<%= opts[:foreign_key] %> IN (?%s)", idsHolder)
|
468
|
-
Destroy<%= opts[:class_name].pluralize %>Where(where, idsT)
|
469
|
-
<%- else -%>
|
470
|
-
where := fmt.Sprintf("<%= model_name_underscore %>_id IN (?%s)", idsHolder)
|
471
|
-
Destroy<%= opts[:class_name].pluralize %>Where(where, idsT)
|
472
|
-
<%- end -%>
|
473
|
-
<%- end -%>
|
474
|
-
<%- end -%>
|
475
|
-
<%- end -%>
|
437
|
+
<%- if has_assoc -%>
|
438
|
+
// not care if exec properly temporarily
|
439
|
+
destroy<%= @model_name %>Associations(ids...)
|
476
440
|
<%- end -%>
|
477
441
|
return cnt, nil
|
478
442
|
}
|
@@ -487,6 +451,9 @@ func Destroy<%= @model_name.pluralize %>Where(where string, args ...interface{})
|
|
487
451
|
} else {
|
488
452
|
return 0, errors.New("No WHERE conditions provided")
|
489
453
|
}
|
454
|
+
<%- if has_assoc -%>
|
455
|
+
ids, x_err := <%= @model_name %>IdsWhere(where, args...)
|
456
|
+
<%- end -%>
|
490
457
|
stmt, err := db.Preparex(db.Rebind(sql))
|
491
458
|
result, err := stmt.Exec(args...)
|
492
459
|
if err != nil {
|
@@ -496,9 +463,86 @@ func Destroy<%= @model_name.pluralize %>Where(where string, args ...interface{})
|
|
496
463
|
if err != nil {
|
497
464
|
return 0, err
|
498
465
|
}
|
466
|
+
<%- if has_assoc -%>
|
467
|
+
if x_err != nil {
|
468
|
+
log.Printf("Delete associated objects error: %v\n", err)
|
469
|
+
} else {
|
470
|
+
destroy<%= @model_name %>Associations(ids...)
|
471
|
+
}
|
472
|
+
<%- end -%>
|
499
473
|
return cnt, nil
|
500
474
|
}
|
501
475
|
|
476
|
+
<%- if has_assoc -%>
|
477
|
+
// the func not return err temporarily
|
478
|
+
func destroy<%= @model_name %>Associations(ids ...int64) {
|
479
|
+
idsHolder := ""
|
480
|
+
if len(ids) > 1 {
|
481
|
+
idsHolder = strings.Repeat(",?", len(ids)-1)
|
482
|
+
}
|
483
|
+
idsT := []interface{}{}
|
484
|
+
for _, id := range ids {
|
485
|
+
idsT = append(idsT, interface{}(id))
|
486
|
+
}
|
487
|
+
var err error
|
488
|
+
// make sure no declared-and-not-used exception
|
489
|
+
_, _, _ = idsHolder, idsT, err
|
490
|
+
<%- [:has_many, :has_one].each do |ass| -%>
|
491
|
+
<%- ass_cols = @struct_info[:assoc_info][ass] -%>
|
492
|
+
<%- unless ass_cols.empty? -%>
|
493
|
+
<%- ass_cols.each_value do |opts| -%>
|
494
|
+
<%- if opts.key? :dependent -%>
|
495
|
+
<%- case opts[:dependent] -%>
|
496
|
+
<%- when :destroy, :delete_all -%>
|
497
|
+
<%- if opts[:through] -%>
|
498
|
+
sql := fmt.Sprintf("id IN (SELECT id FROM <%= opts[:through].to_s %> WHERE <%= model_name_underscore %>_id IN (?%s))", idsHolder)
|
499
|
+
_, err = Destroy<%= opts[:class_name].pluralize %>Where(sql, idsT...)
|
500
|
+
if err != nil {
|
501
|
+
log.Printf("Destroy associated object %s error: %v\n", "<%= opts[:class_name].pluralize %>", err)
|
502
|
+
}
|
503
|
+
sql = fmt.Sprintf("<%= model_name_underscore %>_id IN (?%s)", idsHolder)
|
504
|
+
_, err = Destroy<%= opts[:through].to_s.pluralize.camelize %>Where(sql, idsT...)
|
505
|
+
if err != nil {
|
506
|
+
log.Printf("Destroy associated object %s error: %v\n", "<%= opts[:through].to_s.singularize.camelize %>", err)
|
507
|
+
}
|
508
|
+
<%- else -%>
|
509
|
+
<%- if opts.key? :foreign_key -%>
|
510
|
+
sql := fmt.Sprintf("<%= opts[:foreign_key] %> IN (?%s)", idsHolder)
|
511
|
+
<%- else -%>
|
512
|
+
sql := fmt.Sprintf("<%= model_name_underscore %>_id IN (?%s)", idsHolder)
|
513
|
+
<%- end -%>
|
514
|
+
_, err = Destroy<%= opts[:class_name].pluralize %>Where(sql, idsT...)
|
515
|
+
if err != nil {
|
516
|
+
log.Printf("Destroy associated object %s error: %v\n", "<%= opts[:class_name].pluralize %>", err)
|
517
|
+
}
|
518
|
+
<%- end -%>
|
519
|
+
<%- when :nullify -%>
|
520
|
+
// no sql.NULLType supported, just set the associated field to zero value of int64
|
521
|
+
<%- if opts[:through] -%>
|
522
|
+
sql := fmt.Sprintf("UPDATE <%= opts[:through].to_s %> SET <%= opts[:class_name].underscore %>_id = 0 WHERE <%= opts[:class_name].underscore %>_id IN (?%s)", idsHolder)
|
523
|
+
_, err = Update<%= opts[:through].to_s.camelize %>BySql(sql, idsT...)
|
524
|
+
if err != nil {
|
525
|
+
log.Printf("Delete associated object %s error: %v\n", "<%= opts[:class_name].pluralize %>", err)
|
526
|
+
}
|
527
|
+
<%- else -%>
|
528
|
+
<%- if opts.key? :foreign_key -%>
|
529
|
+
sql := fmt.Sprintf("UPDATE <%= opts[:class_name].underscore.pluralize %> SET <%= opts[:foreign_key] %> = 0 WHERE <%= opts[:foreign_key] %> IN (?%s)", idsHolder)
|
530
|
+
<%- else -%>
|
531
|
+
sql := fmt.Sprintf("UPDATE <%= opts[:class_name].underscore.pluralize %> SET <%= model_name_underscore %>_id = 0 WHERE <%= model_name_underscore %>_id IN (?%s)", idsHolder)
|
532
|
+
<%- end -%>
|
533
|
+
_, err = Update<%= opts[:class_name].pluralize %>BySql(sql, idsT...)
|
534
|
+
if err != nil {
|
535
|
+
log.Printf("Delete associated object %s error: %v\n", "<%= opts[:class_name].pluralize %>", err)
|
536
|
+
}
|
537
|
+
<%- end -%>
|
538
|
+
<%- end -%>
|
539
|
+
<%- end -%>
|
540
|
+
<%- end -%>
|
541
|
+
<%- end -%>
|
542
|
+
<%- end -%>
|
543
|
+
}
|
544
|
+
<%- end -%>
|
545
|
+
|
502
546
|
func (var_<%= model_name_underscore %> *<%= @model_name %>) Save() error {
|
503
547
|
if var_<%= model_name_underscore %>.Id == 0 {
|
504
548
|
return errors.New("Invalid Id field: it can't be a zero value")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: go-on-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- B1nj0y
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Modeling, developing and testing your Golang app with your familiar Rails
|
14
14
|
tools like rails generate, db migration, console etc. It is more meant to help integrating
|