frecon 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f815f2ffe36eae99a451ce057c3f2bc41a355783
4
- data.tar.gz: 0b415f99c4fdc44bc23236bd259cddec01bd505b
3
+ metadata.gz: 87a1e0ba2b53235ae6571889845af40b25e12222
4
+ data.tar.gz: 54af0be09f289107088b401d9b90490c0e8d333a
5
5
  SHA512:
6
- metadata.gz: 86b2d39602ae88bce2c4c10312ac8f9f91f29170b8774104e954d7300bb6e56cecf97ee3d72ec6c5c7c656b7c9c100227efa72cf5df74849a1f944b176c13fb7
7
- data.tar.gz: 0ce13da7ae08cffc748ad6e4ca3baa30e8a0606dfc98b5bc4131b7f59a2a24edc730540a028a2797ae780aed853d03fa87e9b108878465f1eac37a63611b7a89
6
+ metadata.gz: 93bfbc489e1b4f92caa4737655750bbc0d86f1fe13a6e4e452e9ed170143e0ce66fb820a34d56a00eafea833a570c75f89cfc3903184a41d5fe98a6bfb0ea668
7
+ data.tar.gz: 8742321caf2e7c047af913e0520ef4e57877f006d731003eeed1351afb2cf5adf9bcb3fb0ccc1b0483493f459289a0d96872ebc614c00a112446c2ee435719cf
data/bin/frecon CHANGED
@@ -1,7 +1,7 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
3
  # Allow running locally.
4
- lib_directory = File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
4
+ lib_directory = File.class_eval('expand_path(join(dirname(__FILE__), "..", "lib"))')
5
5
  $LOAD_PATH.unshift(lib_directory) unless $LOAD_PATH.include?(lib_directory)
6
6
 
7
7
  require "frecon"
@@ -1,4 +1,13 @@
1
1
  module FReCon
2
- ENVIRONMENT = :development
3
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
+
4
+ @environment_variable = :development
5
+
6
+ def self.environment
7
+ @environment_variable
8
+ end
9
+
10
+ def self.environment=(arg)
11
+ @environment_variable = arg
12
+ end
4
13
  end
@@ -4,7 +4,7 @@ require "frecon/server"
4
4
  module FReCon
5
5
  class Console
6
6
  def self.start
7
- Database.setup
7
+ Database.setup(FReCon.environment)
8
8
 
9
9
  # Use pry if it is installed.
10
10
  # Use the context of the FReCon module;
@@ -11,15 +11,24 @@ module FReCon
11
11
  # Change special post_data attributes.
12
12
  # Convert team number to team id.
13
13
  post_data = team_number_to_team_id(post_data)
14
+ return post_data if post_data.is_an?(Array)
14
15
 
15
16
  # Convert match number and competition name to match id.
16
17
  if post_data["match_number"] && !post_data["match_id"]
17
18
  if post_data["competition_name"] && (competition = Competition.find_by name: post_data["competition_name"])
18
19
  # Try to set the match to the already existing match.
19
- match = competition.matches.find_by number: post_data["match_number"]
20
+ begin
21
+ match = competition.matches.find_by number: post_data["match_number"]
22
+ rescue ArgumentError, TypeError => e
23
+ return [422, ErrorFormatter.format(e.message)]
24
+ end
20
25
 
21
26
  # Create the match if necessary.
22
- match ||= Match.create(number: post_data["match_number"], competition_id: competition.id)
27
+ begin
28
+ match ||= Match.create(number: post_data["match_number"], competition_id: competition.id)
29
+ rescue ArgumentError, TypeError => e
30
+ return [422, ErrorFormatter.format(e.message)]
31
+ end
23
32
 
24
33
  post_data["match_id"] = match.id
25
34
 
@@ -30,7 +39,11 @@ module FReCon
30
39
  match = competition.matches.find_by number: post_data["match_number"]
31
40
 
32
41
  # Create the match if necessary.
33
- match ||= Match.create(number: post_data["match_number"], competition_id: competition.id)
42
+ begin
43
+ match ||= Match.create(number: post_data["match_number"], competition_id: competition.id)
44
+ rescue ArgumentError, TypeError => e
45
+ return [422, ErrorFormatter.format(e.message)]
46
+ end
34
47
 
35
48
  post_data["match_id"] = match.id
36
49
 
@@ -5,9 +5,9 @@ require "frecon/models"
5
5
 
6
6
  module FReCon
7
7
  class Database
8
- def self.setup()
9
- Mongoid.load!(File.join(File.dirname(__FILE__), "mongoid.yml"), ENVIRONMENT)
10
-
8
+ def self.setup(environment)
9
+ Mongoid.load!(File.join(File.dirname(__FILE__), "mongoid.yml"), environment)
10
+
11
11
  Mongoid.logger.level = Logger::DEBUG
12
12
  Mongoid.logger = Logger.new($stdout)
13
13
 
data/lib/frecon/model.rb CHANGED
@@ -6,8 +6,23 @@ module FReCon
6
6
  child.class_eval do
7
7
  include Mongoid::Document
8
8
  include Mongoid::Timestamps
9
- include Mongoid::Attributes::Dynamic
9
+ include Mongoid::Attributes::Dynamic
10
+
11
+ validate :no_invalid_relations
12
+ end
13
+ end
14
+
15
+ def no_invalid_relations
16
+ # Get all of the belongs_to fields (ends with "_id" and not "_id" because that is the id).
17
+ attributes.keys.select { |attribute| attribute.end_with?("_id") && attribute != "_id" }.each do |relation|
18
+ # Get the model for the belongs_to association.
19
+ model = "FReCon::".concat(relation.gsub(/_id\Z/, "").capitalize).constantize
20
+ errors.add(relation.to_sym, "is invalid") if relation_invalid(model, send(relation))
10
21
  end
11
22
  end
23
+
24
+ def relation_invalid(class_constant, id)
25
+ class_constant.find_by(id: id).nil?
26
+ end
12
27
  end
13
28
  end
data/lib/frecon/server.rb CHANGED
@@ -8,14 +8,16 @@ module FReCon
8
8
  class Server < Sinatra::Base
9
9
  include Routes
10
10
 
11
- configure do
12
- Database.setup
13
- end
14
-
15
11
  before do
16
12
  content_type "application/json"
17
13
  end
18
14
 
15
+ def self.run!
16
+ Database.setup(FReCon.environment)
17
+
18
+ super
19
+ end
20
+
19
21
  def self.start
20
22
  run!
21
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frecon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Craig
@@ -95,7 +95,7 @@ files:
95
95
  - lib/frecon/position.rb
96
96
  - lib/frecon/routes.rb
97
97
  - lib/frecon/server.rb
98
- homepage: https://github.com/scouting-project/scouting-project
98
+ homepage: https://github.com/frc-frecon/frecon
99
99
  licenses: []
100
100
  metadata: {}
101
101
  post_install_message: