pgloader/package.lisp

185 lines
4.2 KiB
Common Lisp
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;;; 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*)