kwatable 0.2.0 → 0.3.0

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.
Files changed (67) hide show
  1. data/ChangeLog +46 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +4 -2
  4. data/bin/kwatable +4 -4
  5. data/examples/ex1/Makefile +40 -14
  6. data/examples/ex1/{example1.yaml → tabledef.yaml} +42 -11
  7. data/examples/ex2/Makefile +41 -14
  8. data/examples/ex2/{example2.yaml → tabledef.yaml} +45 -30
  9. data/examples/ex3/Makefile +52 -0
  10. data/examples/ex3/tabledef.yaml +136 -0
  11. data/kwatable.gemspec +11 -10
  12. data/lib/kwatable.rb +24 -18
  13. data/lib/kwatable/kwatable.schema.yaml +95 -5
  14. data/lib/kwatable/main.rb +331 -0
  15. data/lib/kwatable/manipulator.rb +320 -192
  16. data/lib/kwatable/messages.rb +59 -0
  17. data/lib/kwatable/template/ddl-mysql.eruby +202 -0
  18. data/lib/kwatable/{templates → template}/ddl-postgresql.eruby +71 -45
  19. data/lib/kwatable/{templates → template}/defaults.yaml +2 -2
  20. data/lib/kwatable/template/dictionary.en.yaml +70 -0
  21. data/lib/kwatable/template/dictionary.ja.yaml +165 -0
  22. data/lib/kwatable/template/dto-java.eruby +77 -0
  23. data/lib/kwatable/template/dto-java.sub.eruby +259 -0
  24. data/lib/kwatable/template/dto-ruby.eruby +63 -0
  25. data/lib/kwatable/template/dto-ruby.sub.eruby +213 -0
  26. data/lib/kwatable/template/helper/column.rb +70 -0
  27. data/lib/kwatable/template/helper/common.rb +151 -0
  28. data/lib/kwatable/template/helper/java.rb +83 -0
  29. data/lib/kwatable/template/helper/label.rb +90 -0
  30. data/lib/kwatable/template/helper/ruby.rb +36 -0
  31. data/lib/kwatable/template/helper/table.rb +62 -0
  32. data/lib/kwatable/template/hibernate.eruby +139 -0
  33. data/lib/kwatable/template/rails-controller.eruby +66 -0
  34. data/lib/kwatable/template/rails-controller.sub.eruby +114 -0
  35. data/lib/kwatable/template/rails-kwartz.eruby +164 -0
  36. data/lib/kwatable/template/rails-kwartz/_attr.plogic.eruby +56 -0
  37. data/lib/kwatable/template/rails-kwartz/_form.plogic.eruby +81 -0
  38. data/lib/kwatable/template/rails-kwartz/_link.plogic.eruby +36 -0
  39. data/lib/kwatable/template/rails-kwartz/edit.cfg.yaml.eruby +16 -0
  40. data/lib/kwatable/template/rails-kwartz/edit.html.eruby +46 -0
  41. data/lib/kwatable/template/rails-kwartz/edit.plogic.eruby +20 -0
  42. data/lib/kwatable/template/rails-kwartz/layout.html.eruby +39 -0
  43. data/lib/kwatable/template/rails-kwartz/layout.plogic.eruby +32 -0
  44. data/lib/kwatable/template/rails-kwartz/list.html.eruby +94 -0
  45. data/lib/kwatable/template/rails-kwartz/list.plogic.eruby +41 -0
  46. data/lib/kwatable/template/rails-kwartz/new.html.eruby +100 -0
  47. data/lib/kwatable/template/rails-kwartz/new.plogic.eruby +26 -0
  48. data/lib/kwatable/template/rails-kwartz/show.html.eruby +51 -0
  49. data/lib/kwatable/template/rails-kwartz/show.plogic.eruby +9 -0
  50. data/lib/kwatable/template/rails-model.eruby +35 -0
  51. data/lib/kwatable/template/rails-model.sub.eruby +136 -0
  52. data/lib/kwatable/{templates → template}/validator-ruby.eruby +18 -11
  53. data/lib/kwatable/util.rb +133 -0
  54. data/lib/kwatable/util/assert-text-equal.rb +47 -0
  55. data/lib/kwatable/util/assertion.rb +115 -0
  56. data/lib/kwatable/validator.rb +50 -0
  57. data/test/assert-diff.rb +1 -1
  58. data/test/test-ex.rb +306 -0
  59. data/test/test.rb +37 -127
  60. metadata +66 -17
  61. data/COPYING +0 -340
  62. data/ChangeLog.txt +0 -65
  63. data/lib/kwatable/error-msg.rb +0 -38
  64. data/lib/kwatable/main-program.rb +0 -216
  65. data/lib/kwatable/templates/ddl-mysql.eruby +0 -172
  66. data/lib/kwatable/templates/dto-java.eruby +0 -260
  67. data/lib/kwatable/templates/dto-ruby.eruby +0 -185
@@ -0,0 +1,46 @@
1
+ ---
2
+ release: 0.2.0
3
+ date: 2006-09-27
4
+
5
+ enhancements:
6
+ - template/hibernate.eruby: add new template
7
+ - template/dto-java.eruby: support '--collection' property
8
+ - rails-controller.eruby: added
9
+ - template/*.eruby: add <template-help>
10
+ - add 'examples/ex3'
11
+ - add 'rails-model.eruby'
12
+ - add new option '-c' (check only)
13
+ - add new option '-u' (uncheck)
14
+ - add new option '-T' (not untabify)
15
+ - add validator.rb and validate datafiles in main.rb
16
+ - support multiple datafile
17
+ - property '--droptable' supported in ddl-{mysql,postgresql}.eruby
18
+ - command-line option '-hf template' shows template info
19
+ - command-line option '-hf template' shows available templates
20
+ - add new template 'rails-kwartz.eruby'
21
+ - template suffix '.eruby' is omittable
22
+
23
+ changes:
24
+ - main.rb: command-line option '-m' is removed
25
+ - dto-{java,ruby}.eruby: splitted into sub template
26
+ - main.rb: command-line option '-m' is now obsolete
27
+ - ddl-mysql: change to print 'references' clause.
28
+ - ddl-mysql, ddl-postgresql: to add 'default' constraint
29
+ - populate() is improved in dto-java and dto-ruby
30
+ - use setter method to set values in dto-java and dto-ruby
31
+ - rename 'FooBarBaz.rb' to 'foo_bar_baz.rb' in dto-ruby.rb
32
+ - rename 'kwartz/templates/' to 'kwartz/template'
33
+
34
+ bugfixes:
35
+ - template/dto-*.eruby: support command-line option '-d'
36
+ - main.rb: show available template names
37
+ - ex?/tabledef.yaml: column name 'modified_{on|at}' is changed to 'updated_{on|at}'
38
+ - add 'import java.util.List;' in dto-java
39
+ - add default constructor in dto-java
40
+ - manipulator class now detect type of column which refers forward column
41
+ - don't print column 'id' and '{created|modified}_{at|on}'
42
+ - now displays column of foreign key
43
+ - wrong argument passed to Kwatable.msg() in Manipulaotr#_error()
44
+ - fixed on dto-java.eruby
45
+ - fixed on dto-ruby.eruby
46
+
@@ -0,0 +1,20 @@
1
+ copyright(c) 2005 kuwata-lab.com all rights reserved.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.txt CHANGED
@@ -1,5 +1,5 @@
1
1
  .=title: README
2
- .?release: $Release: 0.2.0 $
2
+ .?release: $Release: 0.3.0 $
3
3
 
4
4
 
5
5
  .$ About
@@ -8,6 +8,8 @@ Kwatable is a command to generate SQL script which create tables from
8
8
  table definition file (*.yaml).
9
9
  See `examples' for details.
10
10
 
11
+ NOTICE: Kwatable is now alpha version. Spec may change in the future.
12
+
11
13
 
12
14
 
13
15
  .$ Installation
@@ -78,4 +80,4 @@ copyright(c) 2005 kuwata-lab.com all rights reserved.
78
80
 
79
81
  .$ License
80
82
 
81
- GNU General Public License ver2
83
+ MIT-LICENSE
@@ -4,11 +4,11 @@
4
4
  ### kwatable - create table, dto class, or other from table definition
5
5
  ###
6
6
  ### copyright(c) 2005 kuwata-lab.com all rights reserved.
7
- ### $Release: 0.2.0 $
8
- ### $Rev: 17 $
7
+ ### $Release: 0.3.0 $
8
+ ### $Rev: 25 $
9
9
  ###
10
10
 
11
11
  require 'kwatable'
12
- require 'kwatable/main-program'
12
+ require 'kwatable/main'
13
13
 
14
- Kwatable::MainProgram.main(ARGV)
14
+ Kwatable::Main.main(ARGV)
@@ -1,26 +1,52 @@
1
1
  ###
2
+ ### $Rev: 45 $
3
+ ### $Release: 0.3.0 $
2
4
  ### copyright(c) 2005 kuwata-lab.com all rights reserved.
3
- ### $Release: 0.2.0 $
4
- ### $Rev: 17 $
5
5
  ###
6
6
 
7
- DATAFILE = example1.yaml
8
- OPTS_DTO_JAVA = --package=my.example --parent=Object --populate --constructor
9
- OPTS_DTO_RUBY = --module=Example --parent=Object --reqpath=lib --symbolkey
7
+ DATAFILE = tabledef.yaml
8
+
9
+ OPTS_DDL = --droptable
10
+ OPTS_DTO_JAVA = --package=my.example --parent=Object --populate --constructor --collection=set
11
+ OPTS_DTO_RUBY = --module=Example --parent=Object --reqpath=lib --populate --symbolkey
12
+ OPTS_RAILS_KWARTZ = --lang=ja --charset=UTF8 --stylesheet=site,local --session-token
13
+ OPTS_RAILS_MODEL = --lang=ja --encoding=UTF8
14
+ OPTS_RAILS_CONTROLLER = --lang=ja --encoding=UTF8 --session-token
15
+ OPTS_HIBERNATE = --collection=set --package=my.example
16
+
17
+ RAILS_DIR = rails
18
+ VIEWS_DIR = $(RAILS_DIR)/views
19
+ MODELS_DIR = $(RAILS_DIR)/models
20
+ CONTROLLERS_DIR = $(RAILS_DIR)/controllers
10
21
 
11
22
 
12
23
  all:
13
- kwatable -f ddl-mysql.eruby $(DATAFILE) > ddl-mysql.sql
14
- kwatable -f ddl-postgresql.eruby $(DATAFILE) > ddl-postgresql.sql
15
- kwatable -m -f dto-java.eruby $(DATAFILE)
16
- kwatable -m -f dto-ruby.eruby $(DATAFILE)
24
+ kwatable -t ddl-mysql $(DATAFILE) > ddl-mysql.sql
25
+ kwatable -t ddl-postgresql $(DATAFILE) > ddl-postgresql.sql
26
+ kwatable -t dto-java $(DATAFILE)
27
+ kwatable -t dto-ruby $(DATAFILE)
28
+ kwatable -t hibernate $(DATAFILE) > hibernate.hbm.xml
29
+ mkdir -p $(VIEWS_DIR)
30
+ kwatable -t rails-kwartz -d $(VIEWS_DIR) $(DATAFILE)
31
+ mkdir -p $(MODELS_DIR)
32
+ kwatable -t rails-model -d $(MODELS_DIR) $(DATAFILE)
33
+ mkdir -p $(CONTROLLERS_DIR)
34
+ kwatable -t rails-controller -d $(CONTROLLERS_DIR) $(DATAFILE)
17
35
 
18
36
  all2:
19
- kwatable -f ddl-mysql.eruby $(DATAFILE) > ddl-mysql.sql
20
- kwatable -f ddl-postgresql.eruby $(DATAFILE) > ddl-postgresql.sql
21
- kwatable $(OPTS_DTO_JAVA) -m -f dto-java.eruby $(DATAFILE)
22
- kwatable $(OPTS_DTO_RUBY) -m -f dto-ruby.eruby $(DATAFILE)
37
+ kwatable -t ddl-mysql $(OPTS_DDL) $(DATAFILE) > ddl-mysql.sql
38
+ kwatable -t ddl-postgresql $(OPTS_DDL) $(DATAFILE) > ddl-postgresql.sql
39
+ kwatable -t dto-java $(OPTS_DTO_JAVA) $(DATAFILE)
40
+ kwatable -t dto-ruby $(OPTS_DTO_RUBY) $(DATAFILE)
41
+ kwatable -t hibernate $(OPTS_HIBERNATE) $(DATAFILE) > hibernate.hbm.xml
42
+ mkdir -p $(VIEWS_DIR)
43
+ kwatable -t rails-kwartz -d $(VIEWS_DIR) $(OPTS_RAILS_KWARTZ) $(DATAFILE)
44
+ mkdir -p $(MODELS_DIR)
45
+ kwatable -t rails-model -d $(MODELS_DIR) $(OPTS_RAILS_MODEL) $(DATAFILE)
46
+ mkdir -p $(CONTROLLERS_DIR)
47
+ kwatable -t rails-controller -d $(CONTROLLERS_DIR) $(OPTS_RAILS_CONTROLLER) $(DATAFILE)
48
+
23
49
 
24
50
  clean:
25
- rm -f *.sql *.java *.rb *.class
51
+ rm -rf *.sql *.java *.rb *.class *.xml $(RAILS_DIR)
26
52
 
@@ -2,8 +2,8 @@
2
2
  ## example data file for kwatable
3
3
  ##
4
4
  ## copyright(c) 2005 kuwata-lab.com all rights reserved.
5
- ## $Release: 0.2.0 $
6
- ## $Rev: 17 $
5
+ ## $Release: 0.3.0 $
6
+ ## $Rev: 39 $
7
7
  ##
8
8
 
9
9
  columns:
@@ -15,14 +15,14 @@ columns:
15
15
  - name: name
16
16
  type: string
17
17
  required: yes
18
- width: 63
18
+ width: 60
19
19
 
20
20
  - name: desc
21
21
  type: string
22
22
 
23
23
  - name: email
24
24
  type: string
25
- width: 63
25
+ width: 60
26
26
 
27
27
  - name: status
28
28
  type: string
@@ -30,11 +30,11 @@ columns:
30
30
 
31
31
  - name: username
32
32
  type: string
33
- width: 31
33
+ width: 30
34
34
 
35
35
  - name: password
36
36
  type: string
37
- width: 31
37
+ width: 30
38
38
 
39
39
  - name: memo
40
40
  type: text
@@ -48,15 +48,41 @@ columns:
48
48
  - name: age
49
49
  type: integer
50
50
 
51
- - name: last_update
52
- type: timestamp
53
-
54
51
  - name: gender
55
52
  type: char
56
53
  enum:
57
54
  - M
58
55
  - F
59
56
 
57
+ - name: last_update
58
+ type: timestamp
59
+ required: yes
60
+
61
+ - name: created_on
62
+ desc: created date
63
+ type: date
64
+ default: current_date
65
+ required: yes
66
+
67
+ - name: created_at
68
+ desc: created timestamp
69
+ type: timestamp
70
+ default: current_timestamp
71
+ required: yes
72
+
73
+ - name: updated_on
74
+ desc: last modified date
75
+ type: date
76
+ default: current_date
77
+ required: yes
78
+
79
+ - name: updated_at
80
+ desc: last modified timestamp
81
+ type: timestamp
82
+ default: current_timestamp
83
+ required: yes
84
+
85
+
60
86
  tables:
61
87
  - name: groups
62
88
  class: Group
@@ -71,9 +97,12 @@ tables:
71
97
  - name: case
72
98
  type: string
73
99
  enum: [ normal, debug, emergency ]
74
- - name: flag_active
100
+ - name: active
75
101
  desc: is active?
76
102
  type: boolean
103
+ default: true
104
+ - name: created_on
105
+ - name: updated_on
77
106
 
78
107
  - name: users
79
108
  class: User
@@ -92,8 +121,10 @@ tables:
92
121
  desc: group id to which user belongs
93
122
  - name: account
94
123
  type: string
95
- width: 31
124
+ width: 30
96
125
  required: yes
97
126
  - name: password
98
127
  required: yes
128
+ - name: created_at
129
+ - name: updated_at
99
130
 
@@ -1,25 +1,52 @@
1
1
  ###
2
+ ### $Rev: 45 $
3
+ ### $Release: 0.3.0 $
2
4
  ### copyright(c) 2005 kuwata-lab.com all rights reserved.
3
- ### $Release: 0.2.0 $
4
- ### $Rev: 17 $
5
5
  ###
6
6
 
7
- datafile = example2.yaml
8
- props_dto_java = --package=my.example --parent=Object --populate --constructor
9
- props_dto_ruby = --module=Example --parent=Object --reqpath=lib --symbolkey
7
+ DATAFILE = tabledef.yaml
8
+
9
+ OPTS_DDL = --droptable
10
+ OPTS_DTO_JAVA = --package=my.example --parent=Object --populate --constructor --collection=set
11
+ OPTS_DTO_RUBY = --module=Example --parent=Object --reqpath=lib --populate --symbolkey
12
+ OPTS_RAILS_KWARTZ = --lang=ja --charset=UTF8 --stylesheet=site,local --session-token
13
+ OPTS_RAILS_MODEL = --lang=ja --encoding=UTF8
14
+ OPTS_RAILS_CONTROLLER = --lang=ja --encoding=UTF8 --session-token
15
+ OPTS_HIBERNATE = --collection=set --package=my.example
16
+
17
+ RAILS_DIR = rails
18
+ VIEWS_DIR = $(RAILS_DIR)/views
19
+ MODELS_DIR = $(RAILS_DIR)/models
20
+ CONTROLLERS_DIR = $(RAILS_DIR)/controllers
21
+
10
22
 
11
23
  all:
12
- kwatable -f ddl-mysql.eruby $(datafile) > ddl-mysql.sql
13
- kwatable -f ddl-postgresql.eruby $(datafile) > ddl-postgresql.sql
14
- kwatable -m -f dto-java.eruby $(datafile)
15
- kwatable -m -f dto-ruby.eruby $(datafile)
24
+ kwatable -t ddl-mysql $(DATAFILE) > ddl-mysql.sql
25
+ kwatable -t ddl-postgresql $(DATAFILE) > ddl-postgresql.sql
26
+ kwatable -t dto-java $(DATAFILE)
27
+ kwatable -t dto-ruby $(DATAFILE)
28
+ kwatable -t hibernate $(DATAFILE) > hibernate.hbm.xml
29
+ mkdir -p $(VIEWS_DIR)
30
+ kwatable -t rails-kwartz -d $(VIEWS_DIR) $(DATAFILE)
31
+ mkdir -p $(MODELS_DIR)
32
+ kwatable -t rails-model -d $(MODELS_DIR) $(DATAFILE)
33
+ mkdir -p $(CONTROLLERS_DIR)
34
+ kwatable -t rails-controller -d $(CONTROLLERS_DIR) $(DATAFILE)
16
35
 
17
36
  all2:
18
- kwatable -f ddl-mysql.eruby $(datafile) > ddl-mysql.sql
19
- kwatable -f ddl-postgresql.eruby $(datafile) > ddl-postgresql.sql
20
- kwatable $(props_dto_java) -m -f dto-java.eruby $(datafile)
21
- kwatable $(props_dto_ruby) -m -f dto-ruby.eruby $(datafile)
37
+ kwatable -t ddl-mysql $(OPTS_DDL) $(DATAFILE) > ddl-mysql.sql
38
+ kwatable -t ddl-postgresql $(OPTS_DDL) $(DATAFILE) > ddl-postgresql.sql
39
+ kwatable -t dto-java $(OPTS_DTO_JAVA) $(DATAFILE)
40
+ kwatable -t dto-ruby $(OPTS_DTO_RUBY) $(DATAFILE)
41
+ kwatable -t hibernate $(OPTS_HIBERNATE) $(DATAFILE) > hibernate.hbm.xml
42
+ mkdir -p $(VIEWS_DIR)
43
+ kwatable -t rails-kwartz -d $(VIEWS_DIR) $(OPTS_RAILS_KWARTZ) $(DATAFILE)
44
+ mkdir -p $(MODELS_DIR)
45
+ kwatable -t rails-model -d $(MODELS_DIR) $(OPTS_RAILS_MODEL) $(DATAFILE)
46
+ mkdir -p $(CONTROLLERS_DIR)
47
+ kwatable -t rails-controller -d $(CONTROLLERS_DIR) $(OPTS_RAILS_CONTROLLER) $(DATAFILE)
48
+
22
49
 
23
50
  clean:
24
- rm -f *.sql *.java *.rb *.class
51
+ rm -rf *.sql *.java *.rb *.class *.xml $(RAILS_DIR)
25
52
 
@@ -1,12 +1,12 @@
1
1
  columns:
2
2
  - name: id
3
3
  type: int
4
- primary-key: yes
4
+ ident: yes
5
5
  serial: yes
6
6
 
7
7
  - name: name
8
8
  type: str
9
- not-null: yes
9
+ required: yes
10
10
 
11
11
  - name: desc
12
12
  type: str
@@ -14,22 +14,6 @@ columns:
14
14
 
15
15
  tables:
16
16
 
17
- - name: addresses
18
- class: Address
19
- desc: Address master table
20
- columns:
21
- - name: id
22
- - name: zipcode
23
- type: str
24
- width: 8
25
- pattern: /^\d+-\d+$/
26
- - name: addr1
27
- type: str
28
- - name: addr2
29
- type: str
30
- - name: addr3
31
- type: str
32
-
33
17
  - name: customers
34
18
  class: Customer
35
19
  desc: Customer master table
@@ -40,9 +24,35 @@ tables:
40
24
  type: str
41
25
  - name: email
42
26
  type: str
43
- - name: address_id
44
- ref: addresses.id
45
- not-null: yes
27
+ - name: zip
28
+ type: str
29
+ width: 8
30
+ pattern: /^\d\d\d-\d\d\d\d$/
31
+ - name: address
32
+ type: str
33
+ # - name: address_id
34
+ # ref: addresses.id
35
+ # required: yes
36
+ # cascade: yes
37
+ relations:
38
+ - kind: '1:n'
39
+ referrer: sales_orders.customer_id
40
+
41
+ # - name: addresses
42
+ # class: Address
43
+ # desc: Address master table
44
+ # columns:
45
+ # - name: id
46
+ # - name: zipcode
47
+ # type: str
48
+ # width: 8
49
+ # pattern: /^\d+-\d+$/
50
+ # - name: addr1
51
+ # type: str
52
+ # - name: addr2
53
+ # type: str
54
+ # - name: addr3
55
+ # type: str
46
56
 
47
57
  - name: items
48
58
  class: Item
@@ -53,7 +63,7 @@ tables:
53
63
  - name: desc
54
64
  - name: price
55
65
  type: money
56
- not-null: yes
66
+ required: yes
57
67
 
58
68
  - name: sales_orders
59
69
  class: SalesOrder
@@ -62,33 +72,38 @@ tables:
62
72
  - name: id
63
73
  - name: customer_id
64
74
  ref: customers.id
65
- not-null: yes
75
+ required: yes
66
76
  - name: ordered_date
67
77
  type: date
68
- not-null: yes
78
+ required: yes
69
79
  - name: delivery_date
70
80
  type: date
71
81
  - name: amount
72
82
  type: money
83
+ relations:
84
+ - kind: '1:n'
85
+ referrer: sales_order_lines(order_id)
86
+ order-by: num
87
+ cascade: yes
73
88
 
74
89
  - name: sales_order_lines
75
90
  class: SalesOrderLine
76
91
  desc: Sales Order detail lines
77
92
  columns:
93
+ - name: id
78
94
  - name: num
79
95
  type: int
80
- not-null: yes
96
+ required: yes
81
97
  - name: order_id
82
98
  ref: sales_orders.id
83
- not-null: yes
99
+ required: yes
84
100
  - name: item_id
85
101
  ref: items.id
86
- not-null: yes
102
+ required: yes
87
103
  - name: price
88
104
  type: money
89
- not-null: yes
105
+ required: yes
90
106
  - name: quantity
91
107
  type: int
92
- not-null: yes
93
- primary-keys: [ order_id, item_id ]
108
+ required: yes
94
109