persondb 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +2 -0
- data/Rakefile +8 -1
- data/lib/persondb.rb +5 -0
- data/lib/persondb/models/forward.rb +10 -13
- data/lib/persondb/schema.rb +33 -6
- data/lib/persondb/version.rb +1 -1
- data/test/helper.rb +77 -0
- metadata +81 -12
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -18,7 +18,14 @@ Hoe.spec 'persondb' do
|
|
18
18
|
self.history_file = 'HISTORY.md'
|
19
19
|
|
20
20
|
self.extra_deps = [
|
21
|
-
['
|
21
|
+
['props' ],
|
22
|
+
['logutils'],
|
23
|
+
['textutils'],
|
24
|
+
['worlddb'],
|
25
|
+
['tagutils'], # tags n tagging tables
|
26
|
+
['activerecord-utils'], # extras e.g. rnd, find_by! for 3.x etc.
|
27
|
+
## 3rd party
|
28
|
+
['activerecord'] # NB: will include activesupport,etc.
|
22
29
|
]
|
23
30
|
|
24
31
|
self.licenses = ['Public Domain']
|
data/lib/persondb.rb
CHANGED
@@ -3,8 +3,13 @@
|
|
3
3
|
|
4
4
|
require 'active_record' ## todo: add sqlite3? etc.
|
5
5
|
|
6
|
+
require 'activerecord/utils' # check - if dependency on logutils? or props? etc let others go first
|
7
|
+
|
6
8
|
require 'logutils'
|
7
9
|
require 'textutils'
|
10
|
+
require 'tagutils'
|
11
|
+
require 'props'
|
12
|
+
require 'props/db' # includes ConfDb (ConfDb::Model::Prop, etc.)
|
8
13
|
require 'worlddb'
|
9
14
|
|
10
15
|
|
@@ -4,17 +4,16 @@
|
|
4
4
|
module PersonDb
|
5
5
|
module Model
|
6
6
|
|
7
|
-
|
7
|
+
## todo: why? why not use include WorldDb::Models here???
|
8
|
+
Continent = WorldDb::Model::Continent
|
9
|
+
Country = WorldDb::Model::Country
|
10
|
+
Region = WorldDb::Model::Region
|
11
|
+
City = WorldDb::Model::City
|
8
12
|
|
9
|
-
|
10
|
-
|
11
|
-
Region = WorldDb::Model::Region
|
12
|
-
City = WorldDb::Model::City
|
13
|
+
Tagging = TagDb::Model::Tagging
|
14
|
+
Tag = TagDb::Model::Tag
|
13
15
|
|
14
|
-
|
15
|
-
Tagging = WorldDb::Model::Tagging
|
16
|
-
|
17
|
-
Prop = WorldDb::Model::Prop
|
16
|
+
Prop = ConfDb::Model::Prop
|
18
17
|
|
19
18
|
class Person < ActiveRecord::Base ; end
|
20
19
|
|
@@ -24,13 +23,11 @@ module PersonDb
|
|
24
23
|
## e.g lets you use include PersonDb::Models
|
25
24
|
Models = Model
|
26
25
|
|
27
|
-
end # module
|
26
|
+
end # module PersonDb
|
28
27
|
|
29
28
|
|
30
29
|
module WorldDb
|
31
30
|
module Model
|
32
|
-
|
33
|
-
Person = PersonDb::Model::Person
|
34
|
-
|
31
|
+
Person = PersonDb::Model::Person
|
35
32
|
end
|
36
33
|
end
|
data/lib/persondb/schema.rb
CHANGED
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
module PersonDb
|
4
4
|
|
5
|
-
class CreateDb
|
5
|
+
class CreateDb
|
6
6
|
|
7
7
|
def up
|
8
|
+
ActiveRecord::Schema.define do
|
8
9
|
|
9
10
|
###########
|
10
11
|
# use people ? instead of persons (person/persons makes it easier?)
|
@@ -13,6 +14,10 @@ create_table :persons do |t|
|
|
13
14
|
t.string :key, null: false # import/export key
|
14
15
|
t.string :name, null: false
|
15
16
|
t.string :synonyms # comma separated list of synonyms
|
17
|
+
### fix: change to alt_names
|
18
|
+
|
19
|
+
t.string :code # three letter code (short title) e.g used for formula1 driver etc.
|
20
|
+
|
16
21
|
|
17
22
|
## todo: add gender flag (male/female -man/lady how?)
|
18
23
|
t.date :born_at # optional date of birth (birthday)
|
@@ -23,17 +28,39 @@ create_table :persons do |t|
|
|
23
28
|
t.references :country ## , null: false
|
24
29
|
|
25
30
|
t.references :nationality ## , null: false # by default assume same as country of birth (see above)
|
31
|
+
## fix: add nationality2 n nationality3 too
|
26
32
|
|
27
33
|
t.timestamps
|
28
34
|
end
|
29
35
|
|
30
|
-
end # method up
|
31
|
-
|
32
|
-
def down
|
33
|
-
raise ActiveRecord::IrreversibleMigration
|
34
|
-
end
|
35
36
|
|
37
|
+
end # Schema.define
|
38
|
+
end # method up
|
36
39
|
|
37
40
|
end # class CreateDb
|
38
41
|
|
39
42
|
end # module PersonDb
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
=begin
|
47
|
+
# old (original) sportdb persons table
|
48
|
+
create_table :persons do |t| # use people ? instead of persons (person/persons makes it easier?)
|
49
|
+
t.string :key, null: false # import/export key
|
50
|
+
t.string :name, null: false
|
51
|
+
t.string :synonyms # comma separated list of synonyms
|
52
|
+
t.string :code # three letter code (short title)
|
53
|
+
|
54
|
+
## todo: add gender flag (male/female -man/lady how?)
|
55
|
+
t.date :born_at # optional date of birth (birthday)
|
56
|
+
## todo: add country of birth might not be the same as nationality
|
57
|
+
|
58
|
+
t.references :city
|
59
|
+
t.references :region
|
60
|
+
t.references :country, null: false
|
61
|
+
|
62
|
+
t.references :nationality, null: false # by default assume same as country of birth (see above)
|
63
|
+
|
64
|
+
t.timestamps
|
65
|
+
end
|
66
|
+
=end
|
data/lib/persondb/version.rb
CHANGED
data/test/helper.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
## $:.unshift(File.dirname(__FILE__))
|
4
|
+
|
5
|
+
## minitest setup
|
6
|
+
|
7
|
+
# require 'minitest/unit'
|
8
|
+
require 'minitest/autorun'
|
9
|
+
|
10
|
+
# include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
|
11
|
+
|
12
|
+
|
13
|
+
# ruby stdlibs
|
14
|
+
|
15
|
+
require 'json'
|
16
|
+
require 'uri'
|
17
|
+
require 'pp'
|
18
|
+
|
19
|
+
# our own code
|
20
|
+
|
21
|
+
require 'persondb'
|
22
|
+
require 'logutils/db' # NB: explict require required for LogDb (not automatic)
|
23
|
+
|
24
|
+
Country = WorldDb::Model::Country
|
25
|
+
Region = WorldDb::Model::Region
|
26
|
+
City = WorldDb::Model::City
|
27
|
+
|
28
|
+
## todo: get all models aliases (e.g. from console script)
|
29
|
+
|
30
|
+
Person = PersonDb::Model::Person
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
def setup_in_memory_db
|
36
|
+
# Database Setup & Config
|
37
|
+
|
38
|
+
db_config = {
|
39
|
+
adapter: 'sqlite3',
|
40
|
+
database: ':memory:'
|
41
|
+
}
|
42
|
+
|
43
|
+
pp db_config
|
44
|
+
|
45
|
+
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
46
|
+
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
47
|
+
|
48
|
+
## NB: every connect will create a new empty in memory db
|
49
|
+
ActiveRecord::Base.establish_connection( db_config )
|
50
|
+
|
51
|
+
|
52
|
+
## build schema
|
53
|
+
|
54
|
+
LogDb.create
|
55
|
+
ConfDb.create
|
56
|
+
TagDb.create
|
57
|
+
WorldDb.create
|
58
|
+
PersonDb.create
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
def fillup_in_memory_db
|
63
|
+
## add some counties
|
64
|
+
|
65
|
+
at = Country.create!( key: 'at', title: 'Austria', code: 'AUT', pop: 0, area: 0 )
|
66
|
+
n = Region.create!( key: 'n', title: 'Niederösterreich', country_id: at.id )
|
67
|
+
feuersbrunn = City.create!( key: 'feuersbrunn', title: 'Feuersbrunn', country_id: at.id, region_id: n.id )
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
setup_in_memory_db()
|
72
|
+
fillup_in_memory_db()
|
73
|
+
|
74
|
+
AT = Country.find_by_key!( 'at' )
|
75
|
+
N = Region.find_by_key!( 'n' )
|
76
|
+
FEUERSBRUNN = City.find_by_key!( 'feuersbrunn' )
|
77
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: persondb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,47 +9,115 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: props
|
16
|
+
requirement: &83236560 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *83236560
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: logutils
|
16
|
-
requirement: &
|
27
|
+
requirement: &83236220 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *83236220
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: textutils
|
38
|
+
requirement: &83235830 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *83235830
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: worlddb
|
49
|
+
requirement: &83235410 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *83235410
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: tagutils
|
60
|
+
requirement: &83234330 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *83234330
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord-utils
|
71
|
+
requirement: &83249150 !ruby/object:Gem::Requirement
|
17
72
|
none: false
|
18
73
|
requirements:
|
19
74
|
- - ! '>='
|
20
75
|
- !ruby/object:Gem::Version
|
21
|
-
version: '0
|
76
|
+
version: '0'
|
22
77
|
type: :runtime
|
23
78
|
prerelease: false
|
24
|
-
version_requirements: *
|
79
|
+
version_requirements: *83249150
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: activerecord
|
82
|
+
requirement: &83248700 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *83248700
|
25
91
|
- !ruby/object:Gem::Dependency
|
26
92
|
name: rdoc
|
27
|
-
requirement: &
|
93
|
+
requirement: &83248000 !ruby/object:Gem::Requirement
|
28
94
|
none: false
|
29
95
|
requirements:
|
30
96
|
- - ~>
|
31
97
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
98
|
+
version: '4.0'
|
33
99
|
type: :development
|
34
100
|
prerelease: false
|
35
|
-
version_requirements: *
|
101
|
+
version_requirements: *83248000
|
36
102
|
- !ruby/object:Gem::Dependency
|
37
103
|
name: hoe
|
38
|
-
requirement: &
|
104
|
+
requirement: &83247450 !ruby/object:Gem::Requirement
|
39
105
|
none: false
|
40
106
|
requirements:
|
41
107
|
- - ~>
|
42
108
|
- !ruby/object:Gem::Version
|
43
|
-
version: '3.
|
109
|
+
version: '3.11'
|
44
110
|
type: :development
|
45
111
|
prerelease: false
|
46
|
-
version_requirements: *
|
112
|
+
version_requirements: *83247450
|
47
113
|
description: persondb - person schema n models for easy (re)use
|
48
114
|
email: webslideshow@googlegroups.com
|
49
115
|
executables: []
|
50
116
|
extensions: []
|
51
117
|
extra_rdoc_files:
|
118
|
+
- HISTORY.md
|
52
119
|
- Manifest.txt
|
120
|
+
- README.md
|
53
121
|
files:
|
54
122
|
- HISTORY.md
|
55
123
|
- Manifest.txt
|
@@ -63,6 +131,7 @@ files:
|
|
63
131
|
- lib/persondb/models/worlddb/region.rb
|
64
132
|
- lib/persondb/schema.rb
|
65
133
|
- lib/persondb/version.rb
|
134
|
+
- test/helper.rb
|
66
135
|
- test/test_models.rb
|
67
136
|
- .gemtest
|
68
137
|
homepage: https://github.com/geraldb/person.db.ruby
|
@@ -87,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
87
156
|
- !ruby/object:Gem::Version
|
88
157
|
version: '0'
|
89
158
|
requirements: []
|
90
|
-
rubyforge_project:
|
159
|
+
rubyforge_project:
|
91
160
|
rubygems_version: 1.8.17
|
92
161
|
signing_key:
|
93
162
|
specification_version: 3
|