;; ;; Author: David Krentzlin ;; ;; Created: So Nov 14 13:22:34 2010 (CET) ;; Last-Updated: Sa Nov 20 09:19:45 2010 (CET) ;; By: (use nomads nomads-sql-de-lite numbers) ;; this file implements migrations with a timestamped versioning scheme (versioner (lambda (max-version) (inexact->exact (current-seconds)))) (filename-partitioner (lambda (filename) (let ((parts (string-split filename "-"))) (cond ((null? parts) (cons #f "")) ((string->number (car parts)) => (lambda (num) (cons (number->string (inexact->exact num)) (string-join (cdr parts) "-")))) (else (cons #f filename)))))) (filename-joiner (lambda (version file) (sprintf "~A-~A" version file))) ;;we need to bind it to the number's version of those (version? number?) (define (->number what) (inexact->exact (if (string? what) (string->number what) what))) (version-less? (lambda (l r) (< (->number l) (->number r)))) (version-equal? (lambda (l r) (equal? (->number l) (->number r)))) (database-credentials "./example.db") (migration-directory "migrations") (define (get-version) (let ((version (get-environment-variable "VERSION"))) (if version (or (string->number version) (string->symbol version)) 'latest))) (migrate version: (get-version))