mirror of
https://github.com/dimitri/pgloader.git
synced 2025-08-07 23:07:00 +02:00
185 lines
4.2 KiB
Common Lisp
185 lines
4.2 KiB
Common Lisp
;;;; package.lisp
|
||
;;;
|
||
;;; To avoid circular files dependencies, define all the packages here
|
||
;;;
|
||
|
||
(defpackage #:pgloader.utils
|
||
(:use #:cl #:pgloader.params)
|
||
(:import-from #:cl-log
|
||
#:defcategory
|
||
#:log-manager
|
||
#:start-messenger
|
||
#:log-message
|
||
#:ring-messenger
|
||
#:text-file-messenger
|
||
#:text-stream-messenger
|
||
#:formatted-message)
|
||
(:export #:start-logger
|
||
#:log-message
|
||
#:report-header
|
||
#:report-table-name
|
||
#:report-results
|
||
#:report-footer
|
||
#:format-interval
|
||
#:timing
|
||
#:make-pgstate
|
||
#:pgstate-get-table
|
||
#:pgstate-add-table
|
||
#:pgstate-setf
|
||
#:pgstate-incf
|
||
#:pgstate-decf
|
||
#:pgtable-reject-data
|
||
#:pgtable-reject-logs
|
||
#:report-pgtable-stats
|
||
#:report-pgstate-stats
|
||
#:report-summary
|
||
#:with-stats-collection
|
||
#:slurp-file-into-string
|
||
#:camelCase-to-colname
|
||
#:make-kernel))
|
||
|
||
(defpackage #:pgloader.queue
|
||
(:use #:cl)
|
||
(:export #:map-pop-queue
|
||
#:map-push-queue))
|
||
|
||
(defpackage #:pgloader.pgsql
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:export #:with-pgsql-transaction
|
||
#:pgsql-execute
|
||
#:truncate-table
|
||
#:copy-from-file
|
||
#:copy-from-queue
|
||
#:list-databases
|
||
#:list-tables
|
||
#:list-columns
|
||
#:list-tables-cols
|
||
#:reset-all-sequences
|
||
#:execute
|
||
#:get-date-columns
|
||
#:format-row))
|
||
|
||
(defpackage #:pgloader.parser
|
||
(:use #:cl #:esrap #:pgloader.params #:pgloader.utils)
|
||
(:import-from #:pgloader.pgsql
|
||
#:with-pgsql-transaction
|
||
#:pgsql-execute)
|
||
(:export #:parse-command
|
||
#:run-command
|
||
#:with-database-uri))
|
||
|
||
|
||
;;
|
||
;; Specific source handling
|
||
;;
|
||
(defpackage #:pgloader.csv
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:export #:*csv-path-root*
|
||
#:get-pathname
|
||
#:copy-to-queue
|
||
#:copy-from-file
|
||
#:import-database
|
||
#:guess-csv-params
|
||
#:guess-all-csv-params))
|
||
|
||
(defpackage #:pgloader.db3
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:import-from #:pgloader.pgsql
|
||
#:with-pgsql-transaction
|
||
#:pgsql-execute)
|
||
(:export #:map-rows
|
||
#:copy-to
|
||
#:copy-to-queue
|
||
#:stream-file))
|
||
|
||
(defpackage #:pgloader.archive
|
||
(:use #:cl #:pgloader.params #:pgloader.utils #:pgloader.csv)
|
||
(:import-from #:pgloader.pgsql
|
||
#:with-pgsql-transaction
|
||
#:pgsql-execute)
|
||
(:export #:*default-tmpdir*
|
||
#:http-fetch-file
|
||
#:expand-archive
|
||
#:get-matching-filenames
|
||
#:import-csv-from-zip))
|
||
|
||
(defpackage #:pgloader.syslog
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:import-from #:pgloader.pgsql
|
||
#:with-pgsql-transaction
|
||
#:pgsql-execute)
|
||
(:export #:stream-messages
|
||
#:start-syslog-server
|
||
#:send-message))
|
||
|
||
(defpackage #:pgloader.mysql
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:import-from #:pgloader.pgsql
|
||
#:with-pgsql-transaction
|
||
#:pgsql-execute)
|
||
(:export #:*cast-rules*
|
||
#:*default-cast-rules*
|
||
#:map-rows
|
||
#:copy-to
|
||
#:list-databases
|
||
#:list-tables
|
||
#:export-database
|
||
#:export-import-database
|
||
#:stream-table
|
||
#:stream-database))
|
||
|
||
|
||
;;
|
||
;; Main package
|
||
;;
|
||
(defpackage #:pgloader
|
||
(:use #:cl #:pgloader.params #:pgloader.utils)
|
||
(:import-from #:pgloader.pgsql
|
||
#:copy-from-file
|
||
#:list-databases
|
||
#:list-tables)
|
||
(:import-from #:pgloader.parser
|
||
#:run-command
|
||
#:parse-command
|
||
#:with-database-uri)
|
||
(:export #:*state*
|
||
#:*csv-path-root*
|
||
#:*reject-path-root*
|
||
#:*pgconn-host*
|
||
#:*pgconn-port*
|
||
#:*pgconn-user*
|
||
#:*pgconn-pass*
|
||
#:*pg-settings*
|
||
#:*myconn-host*
|
||
#:*myconn-port*
|
||
#:*myconn-user*
|
||
#:*myconn-pass*
|
||
#:run-command
|
||
#:parse-command
|
||
#:with-database-uri
|
||
#:slurp-file-into-string
|
||
#:copy-from-file
|
||
#:list-databases
|
||
#:list-tables))
|
||
|
||
(in-package #:pgloader)
|
||
|
||
;;;
|
||
;;; Some package names are a little too long to my taste and don't ship with
|
||
;;; nicknames, so use `rename-package' here to give them some new nicknames.
|
||
;;;
|
||
(loop
|
||
for (package . nicknames)
|
||
in '((lparallel lp)
|
||
(lparallel.queue lq)
|
||
(simple-date date)
|
||
(split-sequence sq)
|
||
(com.informatimago.clext.character-sets charsets))
|
||
do (rename-package package package nicknames))
|
||
|
||
;;;
|
||
;;; and recompile. Now you can pre-allocate the queue by passing a size to
|
||
;;; MAKE-QUEUE. (You could pass a number before too, but it was ignored.)
|
||
;;;
|
||
(pushnew :lparallel.with-vector-queue *features*)
|