persondb 0.0.1 → 0.1.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.
- data/.gemtest +0 -0
- data/Manifest.txt +6 -0
- data/README.md +12 -0
- data/lib/persondb/models/forward.rb +36 -0
- data/lib/persondb/models/person.rb +14 -0
- data/lib/persondb/models/worlddb/city.rb +10 -0
- data/lib/persondb/models/worlddb/country.rb +10 -0
- data/lib/persondb/models/worlddb/region.rb +10 -0
- data/lib/persondb/schema.rb +39 -0
- data/lib/persondb/version.rb +2 -1
- data/lib/persondb.rb +38 -0
- data/test/test_models.rb +25 -0
- metadata +17 -8
data/.gemtest
ADDED
File without changes
|
data/Manifest.txt
CHANGED
@@ -3,4 +3,10 @@ Manifest.txt
|
|
3
3
|
README.md
|
4
4
|
Rakefile
|
5
5
|
lib/persondb.rb
|
6
|
+
lib/persondb/models/forward.rb
|
7
|
+
lib/persondb/models/person.rb
|
8
|
+
lib/persondb/models/worlddb/city.rb
|
9
|
+
lib/persondb/models/worlddb/country.rb
|
10
|
+
lib/persondb/models/worlddb/region.rb
|
11
|
+
lib/persondb/schema.rb
|
6
12
|
lib/persondb/version.rb
|
data/README.md
CHANGED
@@ -16,6 +16,18 @@ TBD
|
|
16
16
|
TBD
|
17
17
|
|
18
18
|
|
19
|
+
## Real World Usage
|
20
|
+
|
21
|
+
[wine.db](https://github.com/openwine) - Used for Winemakers
|
22
|
+
|
23
|
+
[football.db](https://github.com/openfootball) - Used for Football Players (Goalies, Defenders, Midfielders, etc.)
|
24
|
+
|
25
|
+
[ski.db](https://github.com/opensport/ski.db) - Use for Alpine Ski Racers
|
26
|
+
|
27
|
+
[forumula1.db](https://github.com/opensport/formula1.db) - Used for Formula 1 Race Drivers
|
28
|
+
|
29
|
+
|
30
|
+
|
19
31
|
## License
|
20
32
|
|
21
33
|
The `persondb` scripts are dedicated to the public domain.
|
@@ -0,0 +1,36 @@
|
|
1
|
+
### forward references
|
2
|
+
## require first to resolve circular references
|
3
|
+
|
4
|
+
module PersonDb
|
5
|
+
module Model
|
6
|
+
|
7
|
+
## todo: why? why not use include WorldDb::Models here???
|
8
|
+
|
9
|
+
Continent = WorldDb::Model::Continent
|
10
|
+
Country = WorldDb::Model::Country
|
11
|
+
Region = WorldDb::Model::Region
|
12
|
+
City = WorldDb::Model::City
|
13
|
+
|
14
|
+
Tag = WorldDb::Model::Tag
|
15
|
+
Tagging = WorldDb::Model::Tagging
|
16
|
+
|
17
|
+
Prop = WorldDb::Model::Prop
|
18
|
+
|
19
|
+
class Person < ActiveRecord::Base ; end
|
20
|
+
|
21
|
+
end # module Model
|
22
|
+
|
23
|
+
## note: for convenciene (and compatibility) add alias Models for Model namespace
|
24
|
+
## e.g lets you use include PersonDb::Models
|
25
|
+
Models = Model
|
26
|
+
|
27
|
+
end # module WineDb
|
28
|
+
|
29
|
+
|
30
|
+
module WorldDb
|
31
|
+
module Model
|
32
|
+
|
33
|
+
Person = PersonDb::Model::Person
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module PersonDb
|
4
|
+
|
5
|
+
class CreateDb < ActiveRecord::Migration
|
6
|
+
|
7
|
+
def up
|
8
|
+
|
9
|
+
###########
|
10
|
+
# use people ? instead of persons (person/persons makes it easier?)
|
11
|
+
|
12
|
+
create_table :persons do |t|
|
13
|
+
t.string :key, null: false # import/export key
|
14
|
+
t.string :name, null: false
|
15
|
+
t.string :synonyms # comma separated list of synonyms
|
16
|
+
|
17
|
+
## todo: add gender flag (male/female -man/lady how?)
|
18
|
+
t.date :born_at # optional date of birth (birthday)
|
19
|
+
## todo: add country of birth might not be the same as nationality
|
20
|
+
|
21
|
+
t.references :city
|
22
|
+
t.references :region
|
23
|
+
t.references :country ## , null: false
|
24
|
+
|
25
|
+
t.references :nationality ## , null: false # by default assume same as country of birth (see above)
|
26
|
+
|
27
|
+
t.timestamps
|
28
|
+
end
|
29
|
+
|
30
|
+
end # method up
|
31
|
+
|
32
|
+
def down
|
33
|
+
raise ActiveRecord::IrreversibleMigration
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end # class CreateDb
|
38
|
+
|
39
|
+
end # module PersonDb
|
data/lib/persondb/version.rb
CHANGED
data/lib/persondb.rb
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
|
2
|
+
# 3rd party gems / libs
|
3
|
+
|
4
|
+
require 'active_record' ## todo: add sqlite3? etc.
|
5
|
+
|
6
|
+
require 'logutils'
|
7
|
+
require 'textutils'
|
8
|
+
require 'worlddb'
|
9
|
+
|
10
|
+
|
11
|
+
### our own code
|
2
12
|
|
3
13
|
require 'persondb/version' # let it always go first
|
14
|
+
require 'persondb/schema'
|
15
|
+
|
16
|
+
require 'persondb/models/forward'
|
17
|
+
|
18
|
+
require 'persondb/models/worlddb/city'
|
19
|
+
require 'persondb/models/worlddb/region'
|
20
|
+
require 'persondb/models/worlddb/country'
|
21
|
+
|
22
|
+
require 'persondb/models/person'
|
23
|
+
|
4
24
|
|
5
25
|
|
6
26
|
module PersonDb
|
@@ -13,6 +33,24 @@ module PersonDb
|
|
13
33
|
"#{File.expand_path( File.dirname(File.dirname(__FILE__)) )}"
|
14
34
|
end
|
15
35
|
|
36
|
+
|
37
|
+
def self.create
|
38
|
+
CreateDb.new.up
|
39
|
+
|
40
|
+
Model::Prop.create!( key: 'db.schema.person.version', value: VERSION )
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.delete!
|
44
|
+
## fix/todo: move into deleter class (see worlddb,sportdb etc.)
|
45
|
+
Model::Person.delete_all
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.tables
|
49
|
+
## fix/todo: move into stats class (see worlddb,sportdb etc.)
|
50
|
+
puts " #{Model::Person.count} persons"
|
51
|
+
end
|
52
|
+
|
53
|
+
|
16
54
|
end # module PersonDb
|
17
55
|
|
18
56
|
|
data/test/test_models.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
|
7
|
+
class TestModels < MiniTest::Unit::TestCase
|
8
|
+
|
9
|
+
def setup # runs before every test
|
10
|
+
PersonDb.delete! # always clean-out tables
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_worlddb_assocs
|
14
|
+
assert_equal 0, AT.persons.count
|
15
|
+
assert_equal 0, N.persons.count
|
16
|
+
assert_equal 0, FEUERSBRUNN.persons.count
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_count
|
20
|
+
assert_equal 0, Person.count
|
21
|
+
|
22
|
+
PersonDb.tables # print stats
|
23
|
+
end
|
24
|
+
|
25
|
+
end # class TestModels
|
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.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2014-03-05 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: logutils
|
16
|
-
requirement: &
|
16
|
+
requirement: &73136460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.5'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *73136460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rdoc
|
27
|
-
requirement: &
|
27
|
+
requirement: &73136130 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '3.10'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *73136130
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: hoe
|
38
|
-
requirement: &
|
38
|
+
requirement: &73135730 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '3.3'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *73135730
|
47
47
|
description: persondb - person schema n models for easy (re)use
|
48
48
|
email: webslideshow@googlegroups.com
|
49
49
|
executables: []
|
@@ -56,7 +56,15 @@ files:
|
|
56
56
|
- README.md
|
57
57
|
- Rakefile
|
58
58
|
- lib/persondb.rb
|
59
|
+
- lib/persondb/models/forward.rb
|
60
|
+
- lib/persondb/models/person.rb
|
61
|
+
- lib/persondb/models/worlddb/city.rb
|
62
|
+
- lib/persondb/models/worlddb/country.rb
|
63
|
+
- lib/persondb/models/worlddb/region.rb
|
64
|
+
- lib/persondb/schema.rb
|
59
65
|
- lib/persondb/version.rb
|
66
|
+
- test/test_models.rb
|
67
|
+
- .gemtest
|
60
68
|
homepage: https://github.com/geraldb/person.db.ruby
|
61
69
|
licenses:
|
62
70
|
- Public Domain
|
@@ -84,4 +92,5 @@ rubygems_version: 1.8.17
|
|
84
92
|
signing_key:
|
85
93
|
specification_version: 3
|
86
94
|
summary: persondb - person schema n models for easy (re)use
|
87
|
-
test_files:
|
95
|
+
test_files:
|
96
|
+
- test/test_models.rb
|