Skip to content

Instantly share code, notes, and snippets.

override fun findBy(userId: UserId) =
UserTable.select { UserTable.id eq userId }?.toUser()
UserTable.select { UserTable.username eq username }?.toUser()
// or
UserTable.select { UserTable.username like username }.map { it.toUser() }
fun ResultRow.toUser() = User(
username = this[UserTable.username],
email = this[UserTable.email],
password = this[UserTable.password]
(defn team-goal-times [events side]
(->> events
(filter goal?)
(map :time)
(map part-and-time)
(map vector (repeat side))))
(defn part [goal]
(let [time (first goal)]
(cond
(<= time 45) 1
(<= time 90) 2
(<= time 105) 3
(<= time 120) 4)))
(defn parts [time-str]
(->>
(defn come-back? [match-to-fix]
(let [match (fix-match match-to-fix)
first-scored-side (first-scored-side match)
winner-side (winner-side match)]
(and (not (nil? winner-side))
(not= winner-side first-scored-side))))
(defn own-goal? [event]
(= "goal-own" (:type_of_event event)))
(defn own-goals [events]
(->> events (filter own-goal?)))
(defn remove-own-goals [events]
(remove own-goal? events))
(defn fix-match [match-to-fix]
(defn teams [match]
(select-keys match [:home_team_country :away_team_country :winner]))
(defn winner-side [match]
(let [winner (:winner match)]
(cond
(= winner (:home_team_country match)) :home
(= winner (:away_team_country match)) :away)))
(defn come-back? [match]
(let [first-scored-side (first-scored-side match)
winner-side (winner-side match)]
(and (not (nil? winner-side))
(defn first-scored-side [match]
(let [goal-times
(concat
(team-goal-times (:home_team_events match) :home)
(team-goal-times (:away_team_events match) :away))]
(->> goal-times (sort-by second) first first)))
(require '[clojure.string :as string])
(defn goal-time [t]
(->>
(string/split t #"\+")
(map string/trim)
(map #(string/replace % #"'" ""))
(map #(Integer/parseInt %))
(reduce +)))