fbcat 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2c857b634ea7b16e1abf478500046f9de3aaf66cdad33dece015266b32de3429
4
+ data.tar.gz: b7f9e0fe6f1a7cc3f56a0db32690667da6f35b8e0ea244ba075ac27d0817d17e
5
+ SHA512:
6
+ metadata.gz: 702df917a4976aed11ef05fc583aa9624a1fb7298a097911ba2b28cec0878aee2aa67b4f875211751342c14d414f38b8382f792ecea9d7c298e3fd8637dc7c28
7
+ data.tar.gz: af475c0cb5e9841b9b7bc79cfdab72fbb0353cf606c0cd69a8731ae6195449a78bd86f719ba168e335999eb3faf7d9e98c020d6171eabeb03e251ab0e79e3948
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ ### 0.1.0
2
+ ### 0.0.1 / 2025-01-03
3
+
4
+ * Everything is new. First release.
data/Manifest.txt ADDED
@@ -0,0 +1,7 @@
1
+ CHANGELOG.md
2
+ Manifest.txt
3
+ README.md
4
+ Rakefile
5
+ bin/fbleagues
6
+ lib/fbcat.rb
7
+ lib/fbcat/models.rb
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # fbcat - command-line tools for built-in football catalog (reference) dbs incl. leagues, clubs, & more"
2
+
3
+
4
+
5
+ * home :: [github.com/sportdb/footty](https://github.com/sportdb/footty)
6
+ * bugs :: [github.com/sportdb/footty/issues](https://github.com/sportdb/footty/issues)
7
+ * gem :: [rubygems.org/gems/fbcat](https://rubygems.org/gems/fbcat)
8
+ * rdoc :: [rubydoc.info/gems/fbcat](http://rubydoc.info/gems/fbcat)
9
+
10
+
11
+ ## Step 0 - Installation Via Gems
12
+
13
+ To install the command-line tool via gems (ruby's package manager) use:
14
+
15
+ ```
16
+ $ gem install fbcat
17
+ ```
18
+
19
+
20
+ ## Usage
21
+
22
+ ...
23
+
24
+
25
+
26
+ ## Questions? Comments?
27
+
28
+ Yes, you can. More than welcome.
29
+ See [Help & Support »](https://github.com/openfootball/help)
data/Rakefile ADDED
@@ -0,0 +1,31 @@
1
+ require 'hoe'
2
+
3
+
4
+ Hoe.spec 'fbcat' do
5
+ self.version = '0.1.0'
6
+
7
+ self.summary = "fbcat - command-line tools for built-in football catalog (reference) dbs incl. leagues, clubs, & more"
8
+ self.description = summary
9
+
10
+ self.urls = { home: 'https://github.com/sportdb/footty' }
11
+
12
+ self.author = 'Gerald Bauer'
13
+ self.email = 'gerald.bauer@gmail.com'
14
+
15
+ # switch extension to .markdown for gihub formatting
16
+ self.readme_file = 'README.md'
17
+ self.history_file = 'CHANGELOG.md'
18
+
19
+ self.licenses = ['Public Domain']
20
+
21
+ self.extra_deps = [
22
+ ['activerecord'],
23
+ ['sqlite3'],
24
+ ['cocos'],
25
+ ['footballdb-data'],
26
+ ]
27
+
28
+ self.spec_extras = {
29
+ required_ruby_version: '>= 3.1.0'
30
+ }
31
+ end
data/bin/fbleagues ADDED
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ## tip: to test run:
4
+ ## ruby -I ./lib bin/fbleagues
5
+
6
+
7
+ ## our own code
8
+ require 'fbcat'
9
+
10
+
11
+ ## default to built-in for now
12
+ path = "#{FootballDb::Data.data_dir}/catalog.db"
13
+ ### './catalog.db',
14
+
15
+ config = {
16
+ adapter: 'sqlite3',
17
+ database: path
18
+ }
19
+ pp config
20
+
21
+
22
+ args = ARGV
23
+
24
+
25
+ ActiveRecord::Base.establish_connection( config )
26
+
27
+
28
+ puts " #{Country.count} countries"
29
+ puts " #{CountryName.count} country names"
30
+ puts " #{Club.count} clubs"
31
+ puts " #{ClubName.count} club names"
32
+ puts " #{NationalTeam.count} national teams"
33
+ puts " #{NationalTeamName.count} national team names"
34
+ puts " #{League.count} leagues"
35
+ puts " #{LeagueName.count} league names"
36
+ puts " #{LeaguePeriod.count} league periods"
37
+
38
+
39
+
40
+ def print_league( league )
41
+ periods = league.league_periods
42
+
43
+ if league.intl?
44
+ if league.clubs?
45
+ print "INTL CLUBS"
46
+ else
47
+ print "INTL NATIONAL TEAMS"
48
+ end
49
+ end
50
+
51
+ print "#{league.country.key}, #{league.country.name} (#{league.country.code})" if league.country
52
+ print " - "
53
+
54
+ print "#{league.name} "
55
+ print "(#{periods.size}) " if periods.size > 1
56
+
57
+ print "\n"
58
+ periods.each do |period|
59
+ print " - #{period.tier_key}, "
60
+ print "#{period.start_season}" if period.start_season
61
+ print "-"
62
+ print "#{period.end_season} " if period.end_season
63
+ print " "
64
+ if period.name == league.name
65
+ print '"'
66
+ else
67
+ print "#{period.name}"
68
+ end
69
+ print " / #{period.qname}" if period.name != period.qname
70
+ print ", #{period.slug}"
71
+ print "\n"
72
+ ## pp period
73
+ end
74
+ end
75
+
76
+ def print_leagues( leagues )
77
+ leagues.each do |league|
78
+ print_league( league )
79
+ end
80
+ puts " #{leagues.size} record(s)"
81
+ end
82
+
83
+
84
+ if args.size > 0
85
+ args.each do |arg|
86
+ ## assume arg is country key
87
+ country = arg
88
+ puts
89
+ puts "==> #{country}"
90
+ leagues = League.where( "country_key = '#{country}'" )
91
+ print_leagues( leagues )
92
+ end
93
+ else
94
+ puts
95
+ puts "==> INTL NATIONAL TEAMS"
96
+ leagues = League.where( 'intl = true AND clubs = false')
97
+ print_leagues( leagues )
98
+
99
+
100
+ puts
101
+ puts "==> INTL CLUBS"
102
+ leagues = League.where( 'intl = true AND clubs = true')
103
+ print_leagues( leagues)
104
+
105
+ puts
106
+ puts "==> NATIONAL LEAGUES & CUPS"
107
+ leagues = League.where( 'intl = false AND clubs = true')
108
+ print_leagues( leagues)
109
+ end
110
+
111
+
112
+ puts "bye"
113
+
@@ -0,0 +1,125 @@
1
+ module CatalogDb
2
+ module Model
3
+
4
+ ##
5
+ # setup for multiple database connection support
6
+ class CatalogRecord < ActiveRecord::Base # ApplicationRecord
7
+ self.abstract_class = true
8
+ end
9
+
10
+ class Country < CatalogRecord
11
+ has_many :country_codes, foreign_key: 'key', primary_key: 'key'
12
+ has_many :country_names, foreign_key: 'key', primary_key: 'key'
13
+
14
+ has_many :clubs, foreign_key: 'country_key', primary_key: 'key'
15
+ has_many :leagues, foreign_key: 'country_key', primary_key: 'key'
16
+ has_many :grounds, foreign_key: 'country_key', primary_key: 'key'
17
+
18
+ has_many :cities, foreign_key: 'country_key', primary_key: 'key'
19
+ end # class Country
20
+
21
+ class CountryCode < CatalogRecord
22
+ belongs_to :country, foreign_key: 'key', primary_key: 'key'
23
+ end # class CountryCode
24
+
25
+ class CountryName < CatalogRecord
26
+ belongs_to :country, foreign_key: 'key', primary_key: 'key'
27
+ end # class CountryName
28
+
29
+
30
+ class City < CatalogRecord
31
+ has_many :city_names, foreign_key: 'key', primary_key: 'key'
32
+
33
+ has_many :grounds, foreign_key: 'city_key', primary_key: 'key'
34
+ ## add has_many :clubs
35
+ ## has_many :ground
36
+ end # class City
37
+
38
+ class CityName < CatalogRecord
39
+ belongs_to :city, foreign_key: 'key', primary_key: 'key'
40
+ end # class CityName
41
+
42
+
43
+
44
+
45
+ class Club < CatalogRecord
46
+ belongs_to :country, foreign_key: 'country_key', primary_key: 'key'
47
+
48
+ has_many :club_names, foreign_key: 'key', primary_key: 'key'
49
+ end
50
+
51
+ class ClubName < CatalogRecord
52
+ belongs_to :club, foreign_key: 'key', primary_key: 'key'
53
+ end
54
+
55
+
56
+ class NationalTeam < CatalogRecord
57
+ belongs_to :country, foreign_key: 'country_key', primary_key: 'key'
58
+
59
+ has_many :national_team_names, foreign_key: 'key', primary_key: 'key'
60
+ end
61
+
62
+ class NationalTeamName < CatalogRecord
63
+ belongs_to :club, foreign_key: 'key', primary_key: 'key'
64
+ end
65
+
66
+
67
+
68
+ class League < CatalogRecord
69
+ belongs_to :country, foreign_key: 'country_key', primary_key: 'key'
70
+
71
+ has_many :league_periods, foreign_key: 'key', primary_key: 'key'
72
+ has_many :league_names, foreign_key: 'key', primary_key: 'key'
73
+ has_many :league_codes, foreign_key: 'key', primary_key: 'key'
74
+
75
+ has_many :event_infos, foreign_key: 'league_key', primary_key: 'key'
76
+ end
77
+
78
+ class LeagueName < CatalogRecord
79
+ belongs_to :league, foreign_key: 'key', primary_key: 'key'
80
+ end
81
+
82
+ class LeagueCode < CatalogRecord
83
+ belongs_to :league, foreign_key: 'key', primary_key: 'key'
84
+ end
85
+
86
+
87
+ ## change/rename to LeagueHistory - why? why not?
88
+ class LeaguePeriod < CatalogRecord
89
+ belongs_to :league, foreign_key: 'key', primary_key: 'key'
90
+
91
+ has_many :league_period_names
92
+ has_many :league_period_codes
93
+ end
94
+
95
+ class LeaguePeriodName < CatalogRecord
96
+ belongs_to :league_period
97
+ end
98
+
99
+ class LeaguePeriodCode < CatalogRecord
100
+ belongs_to :league_period
101
+ end
102
+
103
+
104
+
105
+
106
+
107
+ class Ground < CatalogRecord
108
+ belongs_to :country, foreign_key: 'country_key', primary_key: 'key'
109
+ belongs_to :city, foreign_key: 'city_key', primary_key: 'key'
110
+
111
+ has_many :ground_names, foreign_key: 'key', primary_key: 'key'
112
+ end
113
+
114
+ class GroundName < CatalogRecord
115
+ belongs_to :ground, foreign_key: 'key', primary_key: 'key'
116
+ end
117
+
118
+
119
+ class EventInfo < CatalogRecord
120
+ belongs_to :league, foreign_key: 'league_key', primary_key: 'key'
121
+ end
122
+
123
+
124
+ end # module Model
125
+ end # module CatalogDb
data/lib/fbcat.rb ADDED
@@ -0,0 +1,27 @@
1
+
2
+ require 'active_record' ## todo: add sqlite3? etc.
3
+ require 'sqlite3'
4
+ require 'cocos'
5
+
6
+
7
+ ## pull-in footballdata
8
+ require 'footballdb-data'
9
+
10
+
11
+ ## our own code
12
+ ## note - a copy of 'lib/sportdb/indexers/models' !!!!!
13
+ require_relative 'fbcat/models'
14
+
15
+
16
+ Country = CatalogDb::Model::Country
17
+ CountryName = CatalogDb::Model::CountryName
18
+ Club = CatalogDb::Model::Club
19
+ ClubName = CatalogDb::Model::ClubName
20
+ NationalTeam = CatalogDb::Model::NationalTeam
21
+ NationalTeamName = CatalogDb::Model::NationalTeamName
22
+ League = CatalogDb::Model::League
23
+ LeagueName = CatalogDb::Model::LeagueName
24
+ LeaguePeriod = CatalogDb::Model::LeaguePeriod
25
+
26
+
27
+
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fbcat
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-01-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cocos
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: footballdb-data
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '4.0'
76
+ - - "<"
77
+ - !ruby/object:Gem::Version
78
+ version: '7'
79
+ type: :development
80
+ prerelease: false
81
+ version_requirements: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '4.0'
86
+ - - "<"
87
+ - !ruby/object:Gem::Version
88
+ version: '7'
89
+ - !ruby/object:Gem::Dependency
90
+ name: hoe
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '4.2'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '4.2'
103
+ description: fbcat - command-line tools for built-in football catalog (reference)
104
+ dbs incl. leagues, clubs, & more
105
+ email: gerald.bauer@gmail.com
106
+ executables:
107
+ - fbleagues
108
+ extensions: []
109
+ extra_rdoc_files:
110
+ - CHANGELOG.md
111
+ - Manifest.txt
112
+ - README.md
113
+ files:
114
+ - CHANGELOG.md
115
+ - Manifest.txt
116
+ - README.md
117
+ - Rakefile
118
+ - bin/fbleagues
119
+ - lib/fbcat.rb
120
+ - lib/fbcat/models.rb
121
+ homepage: https://github.com/sportdb/footty
122
+ licenses:
123
+ - Public Domain
124
+ metadata: {}
125
+ post_install_message:
126
+ rdoc_options:
127
+ - "--main"
128
+ - README.md
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 3.1.0
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubygems_version: 3.5.22
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: fbcat - command-line tools for built-in football catalog (reference) dbs
146
+ incl. leagues, clubs, & more
147
+ test_files: []