go-on-rails 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca05e99e94cb8cfda6430e5c757669ebad458d58
4
- data.tar.gz: 5f2b5a426d3f4c36263edb3d98d79d4c7d94f7e7
3
+ metadata.gz: 2ea55ef1523d312ab11f84c0caeb0fd5b8e9f37f
4
+ data.tar.gz: 8f35e3d8a97a4c5f969b528c6b3da4478e33da3a
5
5
  SHA512:
6
- metadata.gz: 4d2874934773f3139d68ed4cccbde2c22631be8e2048541b3b702687f73bebdcb655ba493d420069df61da34becdb9f6b2fab2cfd97a5be402fe5ccef2e0afbc
7
- data.tar.gz: 0c05600084919d689bef80208d4582323ca8e3cb141cfc7d4e3645c9071ff8aba357b57bb14fcda7f6fa2c01b03dfb31313fd331d05203c5b45dd803f2cf8722
6
+ metadata.gz: fc3f84d037c2f9fa9b63df087539a414a6f8ee1fd9846832b9a6de103c7a0d16ac0306f885a48350a8a5569f1c71ecc80021864dbc4560c98b9bf87a44b8d3bc
7
+ data.tar.gz: 22da36278793791b9cc4518e33ac3f01a81ca76a33570e264df5b1d07e4813ff964b8f68c30b7b58a34c57d9ec0ba1163e35c0e303863fba6241b31f4810429a
data/README.md CHANGED
@@ -21,7 +21,7 @@ One or more examples will be given later on.
21
21
  Add this line to your application's Gemfile:
22
22
 
23
23
  ```ruby
24
- gem 'go-on-rails', '~> 0.0.8'
24
+ gem 'go-on-rails', '~> 0.0.9'
25
25
  ```
26
26
 
27
27
  And then execute:
@@ -43,6 +43,12 @@ module GoOnRails
43
43
  else
44
44
  rules << "IsNumeric"
45
45
  end
46
+ when "ActiveModel::Validations::InclusionValidator"
47
+ [:in, :within].each do |i|
48
+ if validator.options && validator.options[i]
49
+ rules << "in(#{validator.options[i].join('|')})" if ['string', 'text'].include?(col.type.to_s)
50
+ end
51
+ end
46
52
  when "ActiveRecord::Validations::LengthValidator"
47
53
  if validator.options && ['string', 'text'].include?(col.type.to_s)
48
54
  if validator.options[:is]
@@ -38,6 +38,52 @@ func Find<%= @model_name %>(id int64) (*<%= @model_name %>, error) {
38
38
  return &var_<%= model_name_underscore %>, nil
39
39
  }
40
40
 
41
+ // First<%= @model_name %> find the first one <%= model_name_underscore %> by id ASC order
42
+ func First<%= @model_name %>() (*<%= @model_name %>, error) {
43
+ var_<%= model_name_underscore %> := <%= @model_name %>{}
44
+ err := db.Get(&var_<%= model_name_underscore %>, db.Rebind(`SELECT * FROM <%= table_name %> ORDER BY id ASC LIMIT 1`))
45
+ if err != nil {
46
+ log.Printf("Error: %v\n", err)
47
+ return nil, err
48
+ }
49
+ return &var_<%= model_name_underscore %>, nil
50
+ }
51
+
52
+ // First<%= @model_name.pluralize %> find the first N <%= model_name_underscore.pluralize %> by id ASC order
53
+ func First<%= @model_name.pluralize %>(n uint32) ([]<%= @model_name %>, error) {
54
+ var_<%= param_name_plural %> := []<%= @model_name %>{}
55
+ sql := fmt.Sprintf("SELECT * FROM <%= table_name %> ORDER BY id ASC LIMIT %v", n)
56
+ err := db.Select(&var_<%= param_name_plural %>, db.Rebind(sql))
57
+ if err != nil {
58
+ log.Printf("Error: %v\n", err)
59
+ return nil, err
60
+ }
61
+ return var_<%= param_name_plural %>, nil
62
+ }
63
+
64
+ // Last<%= @model_name %> find the last one <%= model_name_underscore %> by id DESC order
65
+ func Last<%= @model_name %>() (*<%= @model_name %>, error) {
66
+ var_<%= model_name_underscore %> := <%= @model_name %>{}
67
+ err := db.Get(&var_<%= model_name_underscore %>, db.Rebind(`SELECT * FROM <%= table_name %> ORDER BY id DESC LIMIT 1`))
68
+ if err != nil {
69
+ log.Printf("Error: %v\n", err)
70
+ return nil, err
71
+ }
72
+ return &var_<%= model_name_underscore %>, nil
73
+ }
74
+
75
+ // Last<%= @model_name.pluralize %> find the last N <%= model_name_underscore.pluralize %> by id DESC order
76
+ func Last<%= @model_name.pluralize %>(n uint32) ([]<%= @model_name %>, error) {
77
+ var_<%= param_name_plural %> := []<%= @model_name %>{}
78
+ sql := fmt.Sprintf("SELECT * FROM <%= table_name %> ORDER BY id DESC LIMIT %v", n)
79
+ err := db.Select(&var_<%= param_name_plural %>, db.Rebind(sql))
80
+ if err != nil {
81
+ log.Printf("Error: %v\n", err)
82
+ return nil, err
83
+ }
84
+ return var_<%= param_name_plural %>, nil
85
+ }
86
+
41
87
  // Find<%= @model_name.pluralize %> find one or more <%= model_name_underscore.pluralize %> by one or more ids
42
88
  func Find<%= @model_name.pluralize %>(ids ...int64) ([]<%= @model_name %>, error) {
43
89
  if len(ids) == 0 {
@@ -429,15 +475,16 @@ func (var_<%= model_name_underscore %> *<%= @model_name %>) Destroy() error {
429
475
  }
430
476
 
431
477
  func Destroy<%= @model_name %>(id int64) error {
478
+ <%- if @struct_info[:has_assoc_dependent] -%>
479
+ // Destroy association objects at first
480
+ // Not care if exec properly temporarily
481
+ destroy<%= @model_name %>Associations(id)
482
+ <%- end -%>
432
483
  stmt, err := db.Preparex(db.Rebind(`DELETE FROM <%= table_name %> WHERE id = ?`))
433
484
  _, err = stmt.Exec(id)
434
485
  if err != nil {
435
486
  return err
436
487
  }
437
- <%- if @struct_info[:has_assoc_dependent] -%>
438
- // not care if exec properly temporarily
439
- destroy<%= @model_name %>Associations(id)
440
- <%- end -%>
441
488
  return nil
442
489
  }
443
490
 
@@ -447,6 +494,11 @@ func Destroy<%= @model_name.pluralize %>(ids ...int64) (int64, error) {
447
494
  log.Println(msg)
448
495
  return 0, errors.New(msg)
449
496
  }
497
+ <%- if @struct_info[:has_assoc_dependent] -%>
498
+ // Destroy association objects at first
499
+ // Not care if exec properly temporarily
500
+ destroy<%= @model_name %>Associations(ids...)
501
+ <%- end -%>
450
502
  idsHolder := strings.Repeat(",?", len(ids)-1)
451
503
  sql := fmt.Sprintf(`DELETE FROM <%= table_name %> WHERE id IN (?%s)`, idsHolder)
452
504
  idsT := []interface{}{}
@@ -462,10 +514,6 @@ func Destroy<%= @model_name.pluralize %>(ids ...int64) (int64, error) {
462
514
  if err != nil {
463
515
  return 0, err
464
516
  }
465
- <%- if @struct_info[:has_assoc_dependent] -%>
466
- // not care if exec properly temporarily
467
- destroy<%= @model_name %>Associations(ids...)
468
- <%- end -%>
469
517
  return cnt, nil
470
518
  }
471
519
 
@@ -481,6 +529,11 @@ func Destroy<%= @model_name.pluralize %>Where(where string, args ...interface{})
481
529
  }
482
530
  <%- if @struct_info[:has_assoc_dependent] -%>
483
531
  ids, x_err := <%= @model_name %>IdsWhere(where, args...)
532
+ if x_err != nil {
533
+ log.Printf("Delete associated objects error: %v\n", x_err)
534
+ } else {
535
+ destroy<%= @model_name %>Associations(ids...)
536
+ }
484
537
  <%- end -%>
485
538
  stmt, err := db.Preparex(db.Rebind(sql))
486
539
  result, err := stmt.Exec(args...)
@@ -491,13 +544,6 @@ func Destroy<%= @model_name.pluralize %>Where(where string, args ...interface{})
491
544
  if err != nil {
492
545
  return 0, err
493
546
  }
494
- <%- if @struct_info[:has_assoc_dependent] -%>
495
- if x_err != nil {
496
- log.Printf("Delete associated objects error: %v\n", err)
497
- } else {
498
- destroy<%= @model_name %>Associations(ids...)
499
- }
500
- <%- end -%>
501
547
  return cnt, nil
502
548
  }
503
549
 
@@ -1,13 +1,14 @@
1
1
  package controller
2
2
 
3
3
  import (
4
- "html/template"
5
4
  "net/http"
5
+
6
+ "gopkg.in/gin-gonic/gin.v1"
6
7
  // you can import models
7
8
  //m "../models"
8
9
  )
9
10
 
10
- func HomeHandler(w http.ResponseWriter, r *http.Request) {
11
+ func HomeHandler(c *gin.Context) {
11
12
  // you can use model functions to do CRUD
12
13
  //
13
14
  // user, _ := m.FindUser(1)
@@ -26,6 +27,5 @@ func HomeHandler(w http.ResponseWriter, r *http.Request) {
26
27
  golangVer := "<%= `go version`.chomp rescue "Failed to get" %>"
27
28
 
28
29
  envs := Envs{GoOnRailsVer: gorVer, GolangVer: golangVer}
29
- t, _ := template.ParseFiles("views/index.tmpl")
30
- t.Execute(w, envs)
30
+ c.HTML(http.StatusOK, "index.tmpl", envs)
31
31
  }
@@ -2,28 +2,26 @@ package main
2
2
 
3
3
  import (
4
4
  "flag"
5
- "log"
6
- "net/http"
7
- "os"
8
5
 
9
6
  c "./controllers"
10
- "github.com/gorilla/handlers"
11
- "github.com/gorilla/mux"
7
+ "gopkg.in/gin-gonic/gin.v1"
12
8
  )
13
9
 
14
10
  func main() {
15
11
  // The app will run on port 3000 by default, you can custom it with the flag -port
16
12
  servePort := flag.String("port", "3000", "Http Server Port")
17
13
  flag.Parse()
18
- log.Printf("The application starting on the port: [%v]\n", *servePort)
19
14
 
20
- // Here we are instantiating the gorilla/mux router
21
- r := mux.NewRouter()
22
- // Then we bind some route to some handler(controller action)
23
- r.HandleFunc("/", c.HomeHandler)
15
+ // Here we are instantiating the router
16
+ r := gin.Default()
17
+ // Switch to "release" mode in production
18
+ // gin.SetMode(gin.ReleaseMode)
19
+ r.LoadHTMLGlob("views/*")
24
20
  // Create a static assets router
25
- r.PathPrefix("/public/").Handler(http.StripPrefix("/public/", http.FileServer(http.Dir("./public/"))))
26
-
21
+ // r.Static("/assets", "./public/assets")
22
+ r.StaticFile("/favicon.ico", "./public/favicon.ico")
23
+ // Then we bind some route to some handler(controller action)
24
+ r.GET("/", c.HomeHandler)
27
25
  // Let's start the server
28
- http.ListenAndServe(":"+*servePort, handlers.LoggingHandler(os.Stdout, r))
26
+ r.Run(":" + *servePort)
29
27
  }
data/lib/tasks/gor.rake CHANGED
@@ -4,8 +4,7 @@ namespace :gor do
4
4
  puts 'Beginning to install Go deps...'
5
5
  system "go get \
6
6
  github.com/jmoiron/sqlx \
7
- github.com/gorilla/handlers \
8
- github.com/gorilla/mux \
7
+ gopkg.in/gin-gonic/gin.v1 \
9
8
  github.com/mattn/go-sqlite3 \
10
9
  github.com/go-sql-driver/mysql \
11
10
  github.com/lib/pq \
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.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - B1nj0y
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-05 00:00:00.000000000 Z
11
+ date: 2017-05-10 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