Skip to content

Instantly share code, notes, and snippets.

@Bogdanp
Created March 20, 2021 08:18
Show Gist options
  • Save Bogdanp/58391f9723c49874c3ce9cf0bbc56220 to your computer and use it in GitHub Desktop.
Save Bogdanp/58391f9723c49874c3ce9cf0bbc56220 to your computer and use it in GitHub Desktop.
(define-system prod
[addresses (db) make-address-manager]
[app (addresses auth blog-posts broker broker-admin carts collections db flashes images instagram
mailer migrator orders pages products promos sessions shipping sms stats stripe
users) make-app]
[auth (sessions users) make-auth-manager]
[blog-posts (db) make-blog-post-manager]
[broker (db) make-broker]
[broker-admin (broker) (make-broker-admin-factory "/admin/jobs")]
[carts (sessions) make-cart-manager]
[collections (db) make-collection-manager]
[db (make-database-factory
#:max-connections config:db-pool-size
#:max-idle-connections config:db-pool-idle-size
(lambda ()
(postgresql-connect #:database config:db-name
#:user config:db-username
#:password config:db-password
#:server config:db-host
#:port config:db-port)))]
[flashes (sessions) make-flash-manager]
[instagram (make-instagram-manager-factory #:crawl? config:crawl-instagram)]
[images (db) (make-image-manager-factory #:uploads-path config:uploads-path)]
[mailer (make-mailer-factory #:adapter (if config:postmark-token
(make-postmark-mail-adapter (postmark config:postmark-token))
(make-stub-mail-adapter))
#:sender config:support-email
#:common-variables config:common-mail-variables)]
[migrator (db) (make-migrator-factory migrations-path)]
[orders (db) make-order-manager]
[pages (db) make-page-manager]
[products (db) make-product-manager]
[promos (carts db sessions) make-promo-manager]
[server (app) (compose1 (make-server-factory #:host config:http-host
#:port config:http-port
#:limits (make-safety-limits
#:max-form-data-field-length (* 5 1024 1024)))
app-dispatcher)]
[sessions (make-session-manager-factory #:cookie-name config:session-cookie-name
#:cookie-same-site 'lax
#:shelf-life config:session-shelf-life
#:secret-key config:session-secret-key
#:store (make-memory-session-store #:file-path config:sessions-file-path))]
[shipping (make-shipping-manager-factory
(make-sameday-shipping-adapter
#:root config:sameday-root-uri
#:client (sameday:make-client
#:username config:sameday-username
#:password config:sameday-password)
#:cost (cents->money config:shipping-cost)
#:threshold (cents->money config:shipping-threshold)))]
[sms (make-sms-manager #:client (twilio config:twilio-account-sid
config:twilio-auth-token)
#:sender config:twilio-sender)]
[stats (db) make-stats-manager]
[stripe (lambda ()
(make-stripe
#:secret-key config:stripe-secret-key
#:publishable-key config:stripe-publishable-key
#:webhook-secret-key config:stripe-webhook-secret-key
#:idempotency-prefix config:environment))]
[users (db) make-user-manager]
[worker (broker orders) (lambda (b _)
(define factory
(if config:run-workers
(make-worker-factory)
(make-stub-factory 'worker)))
(factory b))])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment