schemerd 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: 4e52c74c9384f7f05ddb76ee50d3efb4610a0b0923752406860398ee7e2a4e31
4
- data.tar.gz: 1e89449534ad9628103ee0079a8540211c03011c2983cd57d62b3defd8a660c9
3
+ metadata.gz: c6867fc6f77949e2e09eff74caa333877a73ec4e87c97202654dd5e350974db7
4
+ data.tar.gz: 9320abd1d6db3df30512861c8a044d49c0d7e89ab5e45175b4b3dc9e0967591b
5
5
  SHA512:
6
- metadata.gz: 78b5fdf1f3a7e21296f74cd7c90368ca0b3dfaf9bedc05d122dc7353aa54e7fb0305a42b2813bb211c5033671d7b6ac06843ec21efe2c0de2305a7696c2db50e
7
- data.tar.gz: 3c424e43a4caa1369d8e5c4706e5f45b3c30e51de1cac5c176ecb8f125d58198844f62d20387fe4f08a52920417293de8a665396345d949394ba6516e18dc79c
6
+ metadata.gz: 5e9b186348b5d726770a0257ec2710e5f2b7f1629855211795b4d1b81ce179ab7ec06672c20e1acbe38fb7f18ab707d48527349b888f9121fd4c56ea413882d3
7
+ data.tar.gz: 05f2bf31dd2cb83a1039117e33b1efa0b6e203aab920d386fb9b3791b07dbfb86b77aa8aac031358750886eb275885ff5a2c96c43837097ba9cfed128921ae64
@@ -81,8 +81,8 @@ module Schemerd
81
81
 
82
82
  models.each do |model|
83
83
  lines << " #{model.name} {"
84
- model.columns.each do |col|
85
- pk = col.name == "id" ? "PK" : ""
84
+ sort_columns(model.columns).each do |col|
85
+ pk = col.name == model.primary_key ? "PK" : ""
86
86
  type = col.type || "string"
87
87
  lines << " #{type} #{col.name} #{pk}".rstrip
88
88
  end
@@ -93,6 +93,22 @@ module Schemerd
93
93
  lines
94
94
  end
95
95
 
96
+ TIMESTAMP_COLUMNS = %w[created_at updated_at].freeze
97
+
98
+ def sort_columns(columns)
99
+ pk, timestamps, rest = [], [], []
100
+ columns.each do |col|
101
+ if col.name == "id"
102
+ pk << col
103
+ elsif TIMESTAMP_COLUMNS.include?(col.name)
104
+ timestamps << col
105
+ else
106
+ rest << col
107
+ end
108
+ end
109
+ pk + rest.sort_by(&:name) + timestamps.sort_by(&:name)
110
+ end
111
+
96
112
  def relationship_line(source, target, assoc)
97
113
  case assoc.macro
98
114
  when :belongs_to
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Schemerd
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schemerd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Monfort