forked from 4clojure/4clojure
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
174 additions
and
90 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
@echo off | ||
for /f %%a in ('lein classpath') do @set project_classpath=%%a | ||
java -cp %project_classpath% clojure.main .\src\foreclojure\data_set.clj | ||
java -cp %project_classpath% clojure.main -i .\src\foreclojure\mongo.clj -e "(use 'foreclojure.mongo) (prepare-mongo) (shutdown-agents)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
project_classpath=`lein classpath` | ||
echo $project_classpath | ||
java -cp $project_classpath clojure.main ./src/foreclojure/data_set.clj | ||
java -cp $project_classpath clojure.main -i ./src/foreclojure/mongo.clj -e "(use 'foreclojure.mongo) (prepare-mongo) (shutdown-agents)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
(ns foreclojure.mongo | ||
(:use somnium.congomongo | ||
[foreclojure.data-set :only [load-problems]] | ||
[foreclojure.config :only [config]] | ||
[foreclojure.problems :only [total-solved get-problem-list]] | ||
[foreclojure.users :only [get-users]])) | ||
|
||
(defn connect-to-db [] | ||
(let [{:keys [db-user db-pwd db-host]} config] | ||
(mongo! | ||
:host (or db-host "localhost") | ||
:db "mydb") | ||
(when (and db-user db-pwd) | ||
(authenticate db-user db-pwd)))) | ||
|
||
(defn prepare-problems [] | ||
(when-not (fetch-one :problems) | ||
(load-problems)) | ||
(add-index! :problems [:solved])) | ||
|
||
(defn prepare-seqs [] | ||
(update! :seqs | ||
{:_id "problems"} | ||
{:$set {:seq (apply max | ||
(map :_id | ||
(fetch :problems | ||
:only [:_id])))}})) | ||
|
||
;; make it easier to get off the ground by marking contributors automatically | ||
;; useful since some "in-development" features aren't enabled for all users | ||
(defn prepare-users [] | ||
(add-index! :users [:user] :unique true) | ||
(add-index! :users [[:solved -1]]) | ||
(update! :users | ||
{:user {:$in ["amalloy" "dbyrne" "raynes" "cmeier" "devn" | ||
"citizen428" "daviddavis" "clinteger"]}} | ||
{:$set {:contributor true}} | ||
:upsert false | ||
:multiple true)) | ||
|
||
(defn prepare-solutions [] | ||
(add-index! :solutions [:user :problem])) | ||
|
||
(defn reconcile-solved-count | ||
"Overwrites the times-solved field in the problems collection based on data from the users collection. Should only be called on server startup since it isn't a safe operation. Also updates the total-solved agent." | ||
[] | ||
(send | ||
total-solved + | ||
(let [problems (get-problem-list)] | ||
(reduce | ||
#(do | ||
(update! :problems | ||
{:_id (first %2)} | ||
{:$set {:times-solved (last %2)}}) | ||
(+ %1 (last %2))) | ||
0 | ||
(reduce #(update-in %1 [%2] inc) | ||
(reduce #(conj %1 [%2 0]) | ||
{} | ||
(map :_id problems)) | ||
(mapcat :solved (get-users))))))) | ||
|
||
(defn prepare-mongo [] | ||
(connect-to-db) | ||
(prepare-problems) | ||
(prepare-seqs) | ||
(prepare-users) | ||
(prepare-solutions) | ||
(reconcile-solved-count)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
(ns foreclojure.solutions | ||
(:use foreclojure.utils | ||
somnium.congomongo | ||
(amalloy.utils [debug :only [?]])) | ||
(:require [clojure.string :as s])) | ||
|
||
(defn get-solution [user-id problem-id] | ||
(:code (fetch-one :solutions | ||
:where {:user user-id | ||
:problem problem-id}))) | ||
|
||
(defn save-solution [user-id problem-id code] | ||
(update! :solutions | ||
{:user user-id | ||
:problem problem-id} | ||
{:$set {:code code}} | ||
:upsert true)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.