64 lines
2.4 KiB
Clojure
64 lines
2.4 KiB
Clojure
;; This buffer is for Clojure experiments and evaluation.
|
|
|
|
;; Press C-j to evaluate the last expression.
|
|
|
|
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
|
|
|
|
(ns dynamo-replica
|
|
(:require [amazonica.aws.dynamodbv2 :as ddb]
|
|
[datomic.api :as d]
|
|
[auto-ap.datomic :refer [conn]]))
|
|
|
|
(ddb/delete-table :table-name "sales-replica")
|
|
|
|
(ddb/create-table
|
|
:table-name "sales-replica"
|
|
:key-schema [{:attribute-name "id" :key-type "HASH"}
|
|
{:attribute-name "date" :key-type "RANGE"}]
|
|
:attribute-definitions
|
|
[{:attribute-name "id" :attribute-type "S"}
|
|
{:attribute-name "date" :attribute-type "S"}
|
|
{:attribute-name "client" :attribute-type "N"}]
|
|
:global-secondary-indexes
|
|
[{:index-name "client_date"
|
|
:key-schema [{:attribute-name "client" :key-type "HASH"}
|
|
{:attribute-name "date" :key-type "RANGE"}]
|
|
:projection {:projection-type "ALL"}
|
|
:provisioned-throughput
|
|
{:read-capacity-units 500
|
|
:write-capacity-units 500}}]
|
|
:provisioned-throughput
|
|
{:read-capacity-units 500
|
|
:write-capacity-units 500})
|
|
|
|
(user/init-repl)
|
|
|
|
(doseq [client ["NGAK"]
|
|
batch (->> (d/q '[:find [?s ...]
|
|
:in $ ?c
|
|
:where
|
|
[?s :sales-order/client ?c]]
|
|
(d/db conn)
|
|
[:client/code client])
|
|
|
|
(partition-all 25)
|
|
(map (fn [batch]
|
|
(for [o (d/pull-many (d/db conn) '[* {:sales-order/charges [*] :sales-order/line-items [*]}] batch)]
|
|
{:id (str (:db/id o))
|
|
:client (:db/id (:sales-order/client o))
|
|
:date (str (:sales-order/date o))
|
|
:total (:sales-order/total o)
|
|
#_#_:line-items (into-array (for [i (:sales-order/line-items o)]
|
|
(java.util.HashMap. {:total (:order-line-item/total i)})))}))))]
|
|
(println "Adding 25 ... " (first batch))
|
|
(ddb/batch-write-item :request-items
|
|
{"sales-replica"
|
|
(for [item batch]
|
|
{:put-request {:item item}})})
|
|
(Thread/sleep 50)
|
|
#_(ddb/put-item :table-name "sales-replica"
|
|
:item item))
|
|
|
|
(doc d/pull-many)
|
|
|