This repository has been archived by the owner on Jun 17, 2020. It is now read-only.
forked from CMU-Assassins/CMU-Assassins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodels.rb
81 lines (66 loc) · 2.1 KB
/
models.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# encoding: utf-8
require 'data_mapper'
require 'securerandom'
module Assassins
class App < Sinatra::Base
configure do
DataMapper::Property.required(true)
end
end
class Player
include DataMapper::Resource
property :id, Serial
property :echalk_id, String, :unique => true,
:messages => {
:presence => 'Echalk Username must not be blank',
:is_unique => 'Echalk Username is already taken'
}
property :secret, String
property :name, String
belongs_to :target, :model => 'Player', :required => false
belongs_to :tagged_by, :model => 'Player', :required => false
property :failed_kill_attempts, Integer, :default => 0
property :is_alive, Boolean, :default => true
property :kills, Integer, :default => 0
property :last_activity, DateTime, :required => false
property :tagged_at, DateTime, :required => false
property :verification_key, String,
:default => lambda {|r,p| SecureRandom.uuid}
property :is_verified, Boolean, :default => false
property :has_paid, Boolean, :default => false
def set_target_notify (target)
self.target = target
send_email('You have a new target!',
"Name: #{target.name}\n\nPlease remember that the official rules are posted at http://spoons.tk/rules")
end
def generate_secret! (num_words)
secret_words = []
File.open('res/words') do |f|
word_list = f.lines.to_a
num_words.times do
secret_words << word_list.sample.chomp.capitalize
end
end
self.secret = secret_words.join(' ')
end
def email
"#{self.echalk_id}@klschools.org"
end
def active?
self.is_verified && self.is_alive
end
end
class Admin
include DataMapper::Resource
property :id, Serial
property :username, String, :unique => true
property :password, BCryptHash
end
class Game
include DataMapper::Resource
property :id, Serial
property :start_time, DateTime, :required => false
property :freeforall, Boolean, :default => false
end
end
# vim:set ts=2 sw=2 et: