diff options
| -rwxr-xr-x | db/0-create.psql | 14 | ||||
| -rwxr-xr-x | src/site.clj | 15 |
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))) |
