summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsostler <sbostler@gmail.com>2010-01-04 01:25:23 -0500
committersostler <sbostler@gmail.com>2010-01-04 01:25:23 -0500
commit5c4d9aaf8c674183e38f5b7b499784714d025dc1 (patch)
tree1d7b14e5803cc2c48a676d1407f24d20af2c2c4c
parentc825c0daacd89ef0ffccff31982be01256ef33fb (diff)
Fixed update bug
-rwxr-xr-xdb/0-create.psql14
-rwxr-xr-xsrc/site.clj15
2 files changed, 13 insertions, 16 deletions
diff --git a/db/0-create.psql b/db/0-create.psql
index 7bcffe6..be404be 100755
--- a/db/0-create.psql
+++ b/db/0-create.psql
@@ -12,7 +12,8 @@ CREATE TABLE users (
CREATE TABLE rooms (
room_id SERIAL PRIMARY KEY,
name text UNIQUE NOT NULL,
- created_on timestamp NOT NULL DEFAULT now()
+ created_on timestamp NOT NULL DEFAULT now(),
+ admin_only bool NOT NULL DEFAULT false
);
CREATE TABLE messages (
@@ -21,14 +22,11 @@ CREATE TABLE messages (
room_id integer NOT NULL REFERENCES rooms,
content text NOT NULL,
created_on timestamp NOT NULL DEFAULT now(),
- is_image bool
+ is_image bool NOT NULL
);
-CREATE TABLE user_session (
- session_id bigint NOT NULL,
- user_id integer NOT NULL REFERENCES users,
- ttl timestamp NOT NULL,
- PRIMARY KEY (session_id, user_id)
-);
+CREATE INDEX user_id_idx ON messages (user_id);
+CREATE INDEX room_id_idx ON messages (room_id);
+CREATE INDEX created_on_idx ON messages (created_on);
INSERT INTO rooms (room_id, name) VALUES (1, 'dumpfm'); \ No newline at end of file
diff --git a/src/site.clj b/src/site.clj
index df7cb81..50a382b 100755
--- a/src/site.clj
+++ b/src/site.clj
@@ -22,7 +22,7 @@
(def template-group (new StringTemplateGroup "dumpfm" "template"))
(.setRefreshInterval template-group 3)
-(defstruct user-struct :user_id :nick :avatar :last-seen)
+(defstruct user-struct :nick :user_id :avatar :last-seen)
(defstruct message-struct :nick :content :created_on)
(def users (ref {}))
@@ -280,10 +280,8 @@
;; Chat
(defn user-struct-from-session [session]
- {:nick (session :nick)
- :user_id (session :user_id)
- :avatar (session :avatar)
- :last-seen (System/currentTimeMillis)})
+ (struct user-struct (session :nick) (session :user_id) (session :avatar)
+ (System/currentTimeMillis)))
(defn chat [session]
(let [now (System/currentTimeMillis)
@@ -315,8 +313,7 @@
(resp-success (updates last-seen)))
(let [last-seen (session :last-seen)]
[(session-assoc :last-seen now)
- (updates last-seen)])))
- ; TODO: better handle anonymous users
+ (resp-success (updates last-seen))])))
(resp-error "NOT_IN_CHAT"))))
;; http://snippets.dzone.com/posts/show/6995
@@ -392,6 +389,7 @@
:next))
(GET "/favicon.ico" (serve-file "static" "favicon.ico"))
(GET "/u/:nick" (profile session (-> request :route-params :nick) "0"))
+ (GET "/u/:nick/" (profile session (-> request :route-params :nick) "0"))
(GET "/u/:nick/:offset" (profile session
(-> request :route-params :nick)
(-> request :route-params :offset)))
@@ -404,6 +402,7 @@
(GET "/refresh" (refresh session))
(GET "/msg" (msg session params))
(GET "/log" (log session "0"))
+ (GET "/log/" (log session "0"))
(GET "/log/:offset" (log session (-> request :route-params :offset)))
(GET "/upload" (upload session))
(ANY "*" [404 "Page not found"]))
@@ -413,7 +412,7 @@
(with-session {:type :memory, :expires (* 60 60)}))
-; Load messages from database
+;; Load messages from database
(dosync
(ref-set messages (fetch-messages-by-room 1 false)))