summary refs log tree commit diff homepage
path: root/src/http.cr
diff options
context:
space:
mode:
Diffstat (limited to 'src/http.cr')
-rw-r--r--src/http.cr30
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}"