diff options
Diffstat (limited to 'src/http.cr')
-rw-r--r-- | src/http.cr | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/http.cr b/src/http.cr index bfd7bf7..192a398 100644 --- a/src/http.cr +++ b/src/http.cr @@ -93,11 +93,14 @@ class Server next http_error context, 400, "Invalid Parameter" if invalid_param next http_error context, 400, "Missing Parameter" unless params.size == 4 - others = @db.members.each_value.chain @db.applicants.each_value - others.each do |nick, opennic, icann| - errors["nick"] = "Must be unique" if nick == params["nick"] - errors["opennic"] = "Must be unique" if opennic == params["opennic"] - errors["icann"] = "Must be unique" if icann == params["icann"] + + @db.exec "SELECT count(nick), count(opennic), count(icann) + FROM member + WHERE nick = %Q OR opennic = %Q OR icann = %Q", + params["nick"], params["opennic"], params["icann"] do |row| + errors["nick"] = "Must be unique" if row[0].int > 0 + errors["opennic"] = "Must be unique" if row[1].int > 0 + errors["icann"] = "Must be unique" if row[2].int > 0 end if HTML_HEADINGS.includes? params["nick"] errors["nick"] = "Reserved names: #{HTML_HEADINGS.join ", "}" @@ -130,22 +133,9 @@ class Server obj = arg.as Server case table when "member" - case action - in .delete? - obj.db.members.delete rowid - in .insert?, .update? - obj.db.update_member rowid - end - when "applicant" - case action - in .delete? - obj.db.applicants.delete rowid - in .insert?, .update? - obj.db.update_applicant rowid - end + obj.opennic_page.write + obj.icann_page.write end - obj.opennic_page.write - obj.icann_page.write }, self.as Void* puts "Listening on http://#{@server.bind_tcp port}" |