;; ;; %%HEADER%% ;; ;; this file implements migrations with a timestamped versioning ;; scheme (define (configure-timestamped-migrations) (nomads:versioner (lambda (max-version) (inexact->exact (current-seconds)))) (nomads: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)))))) (nomads:filename-joiner (lambda (version file) (sprintf "~A-~A" version file))) (nomads:version? number?) (define (->number what) (inexact->exact (if (string? what) (string->number what) what))) (nomads:version-less? (lambda (l r) (< (->number l) (->number r)))) (nomads:version-equal? (lambda (l r) (equal? (->number l) (->number r)))))