The crane Reference Manual

This is the crane Reference Manual, version 0.4, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 16:09:12 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 crane

An ORM for Common Lisp.

Author

Fernando Borretti <>

Home Page

http://eudoxia.me/crane/

License

MIT

Long Description

# Crane

[![Build Status](https://travis-ci.org/eudoxia0/crane.svg?branch=master)](https://travis-ci.org/eudoxia0/crane)
[![Quicklisp](http://quickdocs.org/badge/crane.svg)](http://quickdocs.org/crane/)

Crane is an ORM for Common Lisp, providing a simple bridge between CLOS and
relational databases, and out of the box migrations.

# Usage

## Defining Tables

“‘lisp
(deftable user ()
(name :type text :uniquep t)
(age :type integer :nullp nil :initform 18)
(friend :type integer :foreign user)))
“‘
The foreign argument accepts a symbol that represents another table or a sexp of the form ‘(table &key on-delete on-update))‘, where acceptable values are ‘:no-action :restrict :cascade :set-null :set-default‘.

## Migrating

“‘lisp
(deftable user ()
(name :type text :uniquep t :nullp nil)
(age :type integer :nullp t :initform 18)
(description :type text))
“‘

Just make the changes, and Crane will compute the diffs and perform all the
‘ALTER TABLE‘s for you.

## Connecting

“‘lisp
(setup
:migrations-directory
(asdf:system-relative-pathname :myapp #p"migrations/")
:databases
’(:main
(:type :postgres
:name "myapp_db"
:user "user"
:pass "user")))

(connect)
“‘

For configuration management and switching databases in development/production
environments, you might want to use [Envy](https://github.com/fukamachi/envy).

## Creating, Saving, and Deleting Objects

“‘lisp
(let ((instance (create ’ship :name "Dalliance"
:tonnage 77)))
;; FIXME: It’s back luck to rename a ship
(setf (name instance) "Serenity")
;; Expand the cargo hold
(incf (tonnage instance) 25)
;; Save these changes!
(save instance)
;; Time to retire
(del instance))
“‘

## Filtering

“‘lisp
(filter ’user) ;; Returns everything

(filter ’user :name "Eudoxia")

(filter ’user (:> :age 21))

;; Returns a single object
(single ’user :name "Eudoxia")

;; Throws an error if this returns more
;; than one object
(single! ’user (:< age 35))

;; t if a match exists, nil otherwise
(exists ’user :name "Eudoxia")

;; If this record doesn’t exist create it
(get-or-create ’user :name "Eudoxia" :age 19)
“‘

## Transactions

“‘lisp
;;;; Automatic
(with-transaction ()
(let ((restaurants (filter ’restaurant ...)))
(loop for restaurant in restaurants do
...
(save restaurant))))

;;;; Manual
(progn
(begin-transaction)
(let ((restaurants (filter ’restaurant ...)))
(loop for restaurant in restaurants do
...
(save restaurant)))
(commit))
“‘

## Fixtures

“‘lisp
;;;; initial-data.lisp
(app:user
(:name "eudoxia"
:groups (:admin :staff))
(:name "joe"
:groups (:admin)))
(app:company
(:name "Initech"
:city "Denver"))

;;;; myapp.asd
(asdf:defsystem myapp
:defsystem-depends-on (:clos-fixtures)
:components ((:module "src"
:components
((:fixture "initial-data")))))
“‘

## Inflate/Deflate

“‘lisp
(definflate (stamp ’timestamp)
;; Inflate a timestamp value
;; into a timestamp object
(local-time:universal-to-timestamp stamp))

(defdeflate (stamp local-time:timestamp)
;; Deflate a timestamp object
;; into a string
(local-time:format-timestring nil stamp))
“‘

# Documentation

I’m in the process of moving the documentation to [Codex][codex], so for now you
can check it out in the [website][docs-pdf].

[codex]: https://github.com/CommonDoc/codex
[docs-pdf]: http://eudoxia.me/crane/docs/manual.pdf

# License

Copyright (c) 2013 Fernando Borretti (eudoxiahp@gmail.com)

Released under the MIT license.

Version

0.4

Dependencies
  • closer-mop (system).
  • anaphora (system).
  • sxql (system).
  • dbi (system).
  • iterate (system).
  • cl-fad (system).
  • clos-fixtures (system).
  • uiop (system).
  • local-time (system).
Source

crane.asd.

Child Component

src (module).


3 Modules

Modules are listed depth-first from the system components tree.


3.1 crane/src

Source

crane.asd.

Parent Component

crane (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 crane/crane.asd

Source

crane.asd.

Parent Component

crane (system).

ASDF Systems

crane.


4.1.2 crane/src/errors.lisp

Source

crane.asd.

Parent Component

src (module).

Packages

crane.errors.

Public Interface
Internals

4.1.3 crane/src/config.lisp

Dependency

errors.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.config.

Public Interface
Internals

*config* (special variable).


4.1.4 crane/src/util.lisp

Dependency

config.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.util.

Public Interface

4.1.5 crane/src/connect.lisp

Dependency

util.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.connect.

Public Interface
Internals

4.1.6 crane/src/sql.lisp

Dependency

connect.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.sql.

Public Interface
Internals

4.1.7 crane/src/meta.lisp

Dependency

sql.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.meta.

Public Interface
Internals

4.1.8 crane/src/query.lisp

Dependency

meta.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.query.

Public Interface

4.1.9 crane/src/migration.lisp

Dependency

query.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.migration.

Public Interface
Internals

4.1.10 crane/src/table.lisp

Dependency

migration.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.table.

Public Interface
Internals

4.1.11 crane/src/types.lisp

Dependency

table.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.types.

Public Interface

4.1.12 crane/src/inflate-deflate.lisp

Dependency

types.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.inflate-deflate.

Public Interface

4.1.13 crane/src/interface.lisp

Dependency

inflate-deflate.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.interface.

Public Interface
Internals

4.1.14 crane/src/fixture.lisp

Dependency

interface.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.fixture.

Public Interface

register-fixture (method).


4.1.15 crane/src/transaction.lisp

Dependency

fixture.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.transaction.

Public Interface

4.1.16 crane/src/crane.lisp

Dependency

transaction.lisp (file).

Source

crane.asd.

Parent Component

src (module).

Packages

crane.


5 Packages

Packages are listed by definition order.


5.1 crane.table

Implements the deftable macro.

Source

table.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface
Internals

5.2 crane.query

Executing cl-dbi queries in the context of Crane.

Source

query.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface

5.3 crane

The global Crane package re-exports symbols from internal modules.

Source

crane.lisp.

Use List

5.4 crane.fixture

Customizes clos-fixtures for use in Crane.

Source

fixture.lisp.

Use List

common-lisp.


5.5 crane.inflate-deflate

Inflation/deflation map SQL string to CLOS objects. This is
unrelated to the ORM, and meant to allow complex column datatypes to be mapped to CLOS objects. For example, mapping SQL timestamps to structures that represent time, or mapping other more complex SQL types to CLOS objects.

Source

inflate-deflate.lisp.

Use List
Public Interface

5.6 crane.sql

This module handles the generation of SQL for table definition and migration.

Source

sql.lisp.

Use List
Public Interface
Internals

5.7 crane.interface

This package contains the methods used to access and alter database records in an object-oriented way.

Source

interface.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface
Internals

5.8 crane.migration

The first part of this package contains various simple
utilities for manipulating the migration history of a table. The second part contains code that actually creates tables and migrates them. The actual generation of table-creating SQL is handled by crane.sql.

Source

migration.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface
Internals

5.9 crane.transaction

Implements transactions.

Source

transaction.lisp.

Use List
  • anaphora.
  • common-lisp.
Public Interface

5.10 crane.types

Implements the database types.

Source

types.lisp.

Used By List
Public Interface

5.11 crane.config

Functions for reading and writing from and to the global configuration.

Source

config.lisp.

Use List
  • anaphora.
  • common-lisp.
Public Interface
Internals

*config* (special variable).


5.12 crane.meta

This file defines the metaclasses that map CLOS objects to SQL tables, and some basic operations on them.

Source

meta.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface
Internals

5.13 crane.connect

Handles database connections, connection parameter validation, and various low-level DB-specific modes.

Source

connect.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Public Interface
Internals

5.14 crane.errors

Definition of Crane errors.

Source

errors.lisp.

Use List

common-lisp.

Public Interface
Internals

5.15 crane.util

Various utilities for use in other parts of Crane.

Source

util.lisp.

Use List
  • anaphora.
  • common-lisp.
  • iterate.
Used By List

crane.sql.

Public Interface

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Special variables

Special Variable: *after-config-hook*

A function that gets executed after setup is called. Takes no arguments, does nothing by default.

Package

crane.config.

Source

config.lisp.

Special Variable: *default-db*

The name of the default database

Package

crane.connect.

Source

connect.lisp.


6.1.2 Macros

Macro: create (class-name &rest args)

Create an object.

Package

crane.interface.

Source

interface.lisp.

Macro: create% (obj)
Package

crane.interface.

Source

interface.lisp.

Macro: create-from-plist (class plist)
Package

crane.interface.

Source

interface.lisp.

Macro: defdeflate ((obj-name obj-type) &rest body)
Package

crane.inflate-deflate.

Source

inflate-deflate.lisp.

Macro: definflate ((obj-name obj-type-name) &rest body)
Package

crane.inflate-deflate.

Source

inflate-deflate.lisp.

Macro: deftable (name (&rest superclasses) &body slots-and-options)

Define a table.

Package

crane.table.

Source

table.lisp.

Macro: deref (obj field)
Package

crane.interface.

Source

interface.lisp.

Macro: do-filter ((result-name class &rest params) &rest body)
Package

crane.interface.

Source

interface.lisp.

Macro: do-query ((result-name query &optional database-name) &rest body)

Execute code for each result in the query, without aggregating them all into a list.

Package

crane.query.

Source

query.lisp.

Macro: exists (class &rest params)
Package

crane.interface.

Source

interface.lisp.

Macro: filter (class &rest params)
Package

crane.interface.

Source

interface.lisp.

Macro: meta-query (query database-name body)
Package

crane.query.

Source

query.lisp.

Macro: query (query &optional database-name)

Execute an SxQL query on the database ‘database-name‘.

Package

crane.query.

Source

query.lisp.

Macro: single (class &rest params)
Package

crane.interface.

Source

interface.lisp.

Macro: single! (class &rest params)
Package

crane.interface.

Source

interface.lisp.

Macro: single-or-create (class &rest params)
Package

crane.interface.

Source

interface.lisp.

Macro: with-transaction ((&optional db) &rest body)
Package

crane.transaction.

Source

transaction.lisp.


6.1.3 Ordinary functions

Function: add-constraint (table-name body)

SQL to add a constraint to a table.

Package

crane.sql.

Source

sql.lisp.

Function: alter-constraint (table-name column-name type value)

SQL to alter a constraint in a table.

Package

crane.sql.

Source

sql.lisp.

Function: begin-transaction (&optional db)
Package

crane.transaction.

Source

transaction.lisp.

Function: build (table-name)
Package

crane.migration.

Source

migration.lisp.

Function: commit (&optional db)
Package

crane.transaction.

Source

transaction.lisp.

Function: connect ()

Connect to all the databases specified in the configuration.

Package

crane.connect.

Source

connect.lisp.

Function: create-and-sort-constraints (table-name digest database-name)

A plist of different types of constraints from a table digest.

Package

crane.sql.

Source

sql.lisp.

Function: create-table (table-name digest)
Package

crane.migration.

Source

migration.lisp.

Function: debugp ()

Determine if Crane is in debug mode.

Package

crane.config.

Source

config.lisp.

Function: define-column (table-name column database-name)

A column definition from the digest of its slot, name and name of the database it’s table belongs to

Package

crane.sql.

Source

sql.lisp.

Function: delete-migrations (&optional force)
Package

crane.migration.

Source

migration.lisp.

Function: diff-digest (digest-a digest-b)

Compute the difference between two digests. See DIGEST.

Package

crane.meta.

Source

meta.lisp.

Function: diff-plist (plist-a plist-b &key test)

Calculates the difference between two plists, returning the result as a list of ([property] [old value] [new value])

Package

crane.util.

Source

util.lisp.

Function: disconnect ()

Cut all connections.

Package

crane.connect.

Source

connect.lisp.

Function: drop-column (table-name column-name)

SQL to drop a column, given the table and column names.

Package

crane.sql.

Source

sql.lisp.

Function: drop-constraint (table-name column-name type)

SQL to drop a constraint from a table.

Package

crane.sql.

Source

sql.lisp.

Function: find-class-slot (class name)

Find a slot by name

Package

crane.util.

Source

util.lisp.

Function: find-slot (obj name)

Find a slot by name

Package

crane.util.

Source

util.lisp.

Function: get-class-slot (class name)

Find a slot in a class by keyword name

Package

crane.util.

Source

util.lisp.

Function: get-config-value (key)

Get the value of ‘key‘ in the configuration.

Package

crane.config.

Source

config.lisp.

Function: get-configuration ()

Return the configuration object, or signal a no-configuration error.

Package

crane.config.

Source

config.lisp.

Function: get-connection (&optional database-name)

Return the connection handler for a given database.

Package

crane.connect.

Source

connect.lisp.

Function: get-db (&optional database-name)

Return the database matching a specific name

Package

crane.connect.

Source

connect.lisp.

Function: get-last-migration (table-name)
Package

crane.migration.

Source

migration.lisp.

Function: get-slot (obj name)

Find slot by keyword name

Package

crane.util.

Source

util.lisp.

Function: insert-migration (table-name digest)

Insert a new diff to the migration history

Package

crane.migration.

Source

migration.lisp.

Function: make-constraint (table-name column-name type value)

A constraint from its type and values, if it can be created (eg :nullp t doesn’t create a constraint, but :nullp nil creates a NOT NULL constraint).

Package

crane.sql.

Source

sql.lisp.

Function: make-keyword (symbol)

Reintern a symbol into the keyword package.

Package

crane.util.

Source

util.lisp.

Function: migrate (table-class diff)
Package

crane.migration.

Source

migration.lisp.

Function: migration-history-p (table-name)

T if the table has a migration history, NIL otherwise.

Package

crane.migration.

Source

migration.lisp.

Function: plist-keys (plist)

Return the keys of a plist.

Package

crane.util.

Source

util.lisp.

Function: rename-migration-history (table-name new-name)
Package

crane.migration.

Source

migration.lisp.

Function: rollback (&optional db)
Package

crane.transaction.

Source

transaction.lisp.

Function: setup (&key migrations-directory databases debug)

Set the configuration.

Package

crane.config.

Source

config.lisp.

Function: sqlize (obj)

Turn a symbol or a string into its SQL representation. Identical to the behaviour of SxQL.

Package

crane.sql.

Source

sql.lisp.


6.1.4 Generic functions

Generic Reader: abstractp (object)
Package

crane.meta.

Methods
Reader Method: abstractp ((<table-class> <table-class>))

Whether the class corresponds to an SQL table or not.

Source

meta.lisp.

Target Slot

abstractp.

Generic Reader: col-autoincrement-p (object)
Package

crane.meta.

Methods
Reader Method: col-autoincrement-p ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-autoincrement-p.

Generic Reader: col-check (object)
Package

crane.meta.

Methods
Reader Method: col-check ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-check.

Generic Reader: col-foreign (object)
Package

crane.meta.

Methods
Reader Method: col-foreign ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-foreign.

Generic Reader: col-index-p (object)
Package

crane.meta.

Methods
Reader Method: col-index-p ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-index-p.

Generic Reader: col-null-p (object)
Package

crane.meta.

Methods
Reader Method: col-null-p ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-null-p.

Generic Reader: col-primary-p (object)
Package

crane.meta.

Methods
Reader Method: col-primary-p ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-primary-p.

Generic Reader: col-type (object)
Package

crane.meta.

Methods
Reader Method: col-type ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-type.

Generic Writer: (setf col-type) (object)
Package

crane.meta.

Methods
Writer Method: (setf col-type) ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated writer method

Source

meta.lisp.

Target Slot

col-type.

Generic Reader: col-unique-p (object)
Package

crane.meta.

Methods
Reader Method: col-unique-p ((table-class-slot-definition-mixin table-class-slot-definition-mixin))

automatically generated reader method

Source

meta.lisp.

Target Slot

col-unique-p.

Generic Reader: database-connection (object)
Generic Writer: (setf database-connection) (object)
Package

crane.connect.

Methods
Reader Method: database-connection ((<database> <database>))
Writer Method: (setf database-connection) ((<database> <database>))

The underlying connection object.

Source

connect.lisp.

Target Slot

conn.

Generic Reader: database-name (object)
Package

crane.connect.

Methods
Reader Method: database-name ((<database> <database>))

The database name. If it’s an SQLite3 database, must be the pathname’s namestring.

Source

connect.lisp.

Target Slot

name.

Generic Reader: database-type (object)
Package

crane.connect.

Methods
Reader Method: database-type ((<database> <database>))

A keyword representing the database type, e.g :sqlite3, :postgres.

Source

connect.lisp.

Target Slot

type.

Generic Reader: deferredp (object)
Package

crane.meta.

Methods
Reader Method: deferredp ((<table-class> <table-class>))

Whether the class should be built only when explicitly calling build.

Source

meta.lisp.

Target Slot

deferredp.

Generic Function: deflate (obj)

Turn a Lisp object into a string for insertion in the database.

Package

crane.inflate-deflate.

Source

inflate-deflate.lisp.

Methods
Method: deflate ((stamp timestamp))
Method: deflate (obj)
Method: deflate ((num number))
Method: deflate ((str string))
Generic Function: del (obj)
Package

crane.interface.

Methods
Method: del ((obj <table>))

Delete an object from the database.

Source

interface.lisp.

Generic Function: digest (class)
Package

crane.meta.

Methods
Method: digest ((class <table-class>))

Serialize a class’s options and slots’ options into a plist

Source

meta.lisp.

Generic Function: drop-table (table)
Package

crane.interface.

Methods
Method: drop-table ((table-name symbol))
Source

interface.lisp.

Method: drop-table ((table <table-class>))
Source

interface.lisp.

Generic Function: inflate (obj type-name)

Turn a string into a CLOS object.

Package

crane.inflate-deflate.

Source

inflate-deflate.lisp.

Methods
Method: inflate (stamp (type (eql crane.types:timestamp)))
Method: inflate (obj (type (eql crane.types:datetime)))
Method: inflate (obj (type (eql crane.types:varchar)))
Method: inflate (obj (type (eql crane.types:text)))
Method: inflate (obj (type (eql crane.types:double)))
Method: inflate (obj (type (eql crane.types:numeric)))
Method: inflate (obj (type (eql crane.types:smallint)))
Method: inflate (obj (type (eql crane.types:bigint)))
Method: inflate (obj (type (eql integer)))
Generic Function: plist->object (table tuple)
Package

crane.interface.

Methods
Method: plist->object ((table-name symbol) tuple)
Source

interface.lisp.

Method: plist->object ((table <table-class>) tuple)

Convert a tuple produced by CL-DBI to a CLOS instance.

Source

interface.lisp.

Generic Function: save (obj)
Package

crane.interface.

Methods
Method: save ((obj <table>))

Write an instance object to the database.

Source

interface.lisp.

Generic Function: table-database (class)
Package

crane.meta.

Methods
Method: table-database ((class <table-class>))

The database this class belongs to.

Source

meta.lisp.

Generic Function: table-name (class)
Package

crane.meta.

Methods
Method: table-name ((class <table-class>))

Return the name of a the class, a symbol.

Source

meta.lisp.


6.1.5 Standalone methods

Method: compute-effective-slot-definition ((class <table-class>) slot-name direct-slot-definitions)
Package

sb-mop.

Source

meta.lisp.

Method: direct-slot-definition-class ((class <table-class>) &rest initargs)
Package

sb-mop.

Source

meta.lisp.

Method: effective-slot-definition-class ((class <table-class>) &rest initargs)
Package

sb-mop.

Source

meta.lisp.

Method: register-fixture ((instance <table>))
Package

clos-fixtures.

Source

fixture.lisp.

Method: validate-superclass ((class standard-class) (super <table-class>))
Package

sb-mop.

Source

meta.lisp.

Method: validate-superclass ((class <table-class>) (super standard-class))
Package

sb-mop.

Source

meta.lisp.


6.1.6 Conditions

Condition: configuration-error

An error in the configuration.

Package

crane.errors.

Source

errors.lisp.

Direct superclasses

crane-error.

Direct methods

key.

Direct slots
Slot: key

The configuration key afflicted by the error.

Initargs

:key

Readers

key.

Writers

This slot is read-only.

Condition: empty-table

Table has no slots.

Package

crane.errors.

Source

errors.lisp.

Direct superclasses

crane-error.

Condition: no-configuration-error

Crane was not configured.

Package

crane.errors.

Source

errors.lisp.

Direct superclasses

crane-error.

Condition: query-error

Error in a query.

Package

crane.errors.

Source

errors.lisp.

Direct superclasses

crane-error.


6.1.7 Classes

Class: <database>

A database.

Package

crane.connect.

Source

connect.lisp.

Direct methods
Direct slots
Slot: type

A keyword representing the database type, e.g :sqlite3, :postgres.

Package

common-lisp.

Type

keyword

Initargs

:type

Readers

database-type.

Writers

This slot is read-only.

Slot: name

The database name. If it’s an SQLite3 database, must be the pathname’s namestring.

Type

string

Initargs

:name

Readers

database-name.

Writers

This slot is read-only.

Slot: conn-spec

The connection specification.

Initargs

:conn-spec

Readers

database-connection-spec.

Writers

This slot is read-only.

Slot: conn

The underlying connection object.

Initargs

:connection

Readers

database-connection.

Writers

(setf database-connection).

Class: <table-class>

A table metaclass.

Package

crane.meta.

Source

meta.lisp.

Direct superclasses

standard-class.

Direct methods
Direct slots
Slot: abstractp

Whether the class corresponds to an SQL table or not.

Initargs

:abstractp

Readers

abstractp.

Writers

This slot is read-only.

Slot: deferredp

Whether the class should be built only when explicitly calling build.

Initargs

:deferredp

Readers

deferredp.

Writers

This slot is read-only.

Slot: database

The database this class belongs to.

Initargs

:database

Readers

%table-database.

Writers

This slot is read-only.

Class: <table>

The base class of all table classes.

Package

crane.table.

Source

table.lisp.

Direct methods

6.1.8 Types

Type: bigint ()
Package

crane.types.

Source

types.lisp.

Type: datetime ()
Package

crane.types.

Source

types.lisp.

Type: double ()
Package

crane.types.

Source

types.lisp.

Type: int ()
Package

crane.types.

Source

types.lisp.

Type: numeric ()
Package

crane.types.

Source

types.lisp.

Type: smallint ()
Package

crane.types.

Source

types.lisp.

Type: text ()
Package

crane.types.

Source

types.lisp.

Type: timestamp ()
Package

crane.types.

Source

types.lisp.

Type: varchar ()
Package

crane.types.

Source

types.lisp.


6.2 Internals


6.2.1 Special variables

Special Variable: *config*

This variable holds Crane’s global configuration.

Package

crane.config.

Source

config.lisp.

Special Variable: *db*

A map from database names to <database> objects.

Package

crane.connect.

Source

connect.lisp.

Special Variable: +create-table-format-string+
Package

crane.migration.

Source

migration.lisp.

Special Variable: +db-params+
Package

crane.connect.

Source

connect.lisp.

Special Variable: +referential-actions+
Package

crane.sql.

Source

sql.lisp.

Special Variable: +slot-mapping+
Package

crane.table.

Source

table.lisp.

Special Variable: +standard-class-options+
Package

crane.table.

Source

table.lisp.

Special Variable: +system-mapping+
Package

crane.connect.

Source

connect.lisp.


6.2.2 Ordinary functions

Function: add-default-slots (slot-name plist)

If the slot doesn’t have :initarg or :accessor slots, add them.

Package

crane.table.

Source

table.lisp.

Function: any-concrete-superclasses (superclasses)
Package

crane.table.

Source

table.lisp.

Function: autoincrement-sql (database-type)
Package

crane.sql.

Source

sql.lisp.

Function: constraint-name (table-name column-name type)

Give constraints Crane-specific names

Package

crane.sql.

Source

sql.lisp.

Function: create-column-constraints (table-name column)
Package

crane.sql.

Source

sql.lisp.

Function: diff-slot (slot-a slot-b)

Compute the difference between two slot digests. See DIGEST.

Package

crane.meta.

Source

meta.lisp.

Function: digest-slot (slot)
Package

crane.meta.

Source

meta.lisp.

Function: enforce-foreign-keys (connection database-type)
Package

crane.connect.

Source

connect.lisp.

Function: foreign (local foreign-table &key on-delete on-update)
Package

crane.sql.

Source

sql.lisp.

Function: get-migration-dir ()
Package

crane.migration.

Source

migration.lisp.

Function: load-driver (driver)

Load the ASDF system for the specified database module.

Package

crane.connect.

Source

connect.lisp.

Function: make-set (obj)

Transform an object into a call to the set= function used by SxQL. Deflation happens here.

Package

crane.interface.

Source

interface.lisp.

Function: map-ref-action (action)
Package

crane.sql.

Source

sql.lisp.

Function: migration-history-pathname (table-name)

Return the pathname to the file containing the migration history for the table ‘table-name‘.

Package

crane.migration.

Source

migration.lisp.

Function: process-slot (slot)

Take a plist like (:col-type ’string :col-null-p t) and remove the prefixes on the keys. Turn ’deftable slot properties’ (:type, :nullp, etc.) into ’table-class slot properties’ (:col-type, :col-null-p, etc.)

Package

crane.table.

Source

table.lisp.

Function: read-migration-history (table-name)
Package

crane.migration.

Source

migration.lisp.

Function: separate-slots-and-options (slots-and-options)

To minimize the number of parentheses, both slots and table options come in the same list. This function separates them: Normal slot names are plain old symbols, table options are keywords.

Package

crane.table.

Source

table.lisp.

Function: serialize (stream list)

Serialize a list of digests.

Package

crane.migration.

Source

migration.lisp.

Function: serialize-plist (plist)
Package

crane.migration.

Source

migration.lisp.

Function: set-index (table-name column-name value)

Toggle INDEX pseudo-constraint.

Package

crane.sql.

Source

sql.lisp.

Function: set-null (column-name value)

Toggle NULL constraint.

Package

crane.sql.

Source

sql.lisp.

Function: set-primary (column-name value)

Toggle PRIMARY KEY constraint.

Package

crane.sql.

Source

sql.lisp.

Function: set-proper-quote-character (connection database-type)
Package

crane.connect.

Source

connect.lisp.

Function: set-unique (column-name value)

Toggle UNIQUE constraint.

Package

crane.sql.

Source

sql.lisp.

Function: sort-slot-list (list)
Package

crane.meta.

Source

meta.lisp.

Function: validate-all-databases ()

Immediately after configuration, iterate over the list of defined databases, validating configuration parameters, creating their corresponding <database> instances, and setting the value of *default-db*.

Package

crane.connect.

Source

connect.lisp.

Function: validate-connection-spec (db database-type spec)
Package

crane.connect.

Source

connect.lisp.


6.2.3 Generic functions

Generic Reader: %table-database (object)
Package

crane.meta.

Methods
Reader Method: %table-database ((<table-class> <table-class>))

The database this class belongs to.

Source

meta.lisp.

Target Slot

database.

Generic Function: clean-tuple (table tuple)
Package

crane.interface.

Methods
Method: clean-tuple ((table <table-class>) tuple)

Process a plist returned by CL-DBI into a format that can be accepted by make-instance. Inflation happens here.

Source

interface.lisp.

Generic Reader: database-connection-spec (object)
Package

crane.connect.

Methods
Reader Method: database-connection-spec ((<database> <database>))

The connection specification.

Source

connect.lisp.

Target Slot

conn-spec.

Generic Reader: key (condition)
Package

crane.errors.

Methods
Reader Method: key ((condition configuration-error))
Source

errors.lisp.

Target Slot

key.

Generic Function: make-connection (database)
Package

crane.connect.

Methods
Method: make-connection ((database <database>))
Source

connect.lisp.

Generic Function: slot-tuple (obj)
Package

crane.interface.

Methods
Method: slot-tuple (obj)
Source

interface.lisp.

Generic Reader: text (condition)
Package

crane.errors.

Methods
Reader Method: text ((condition crane-error))
Source

errors.lisp.

Target Slot

text.


6.2.4 Conditions

Condition: crane-error
Package

crane.errors.

Source

errors.lisp.

Direct superclasses

condition.

Direct subclasses
Direct methods

text.

Direct slots
Slot: text
Initargs

:text

Readers

text.

Writers

This slot is read-only.


6.2.5 Classes

Class: table-class-direct-slot-definition
Package

crane.meta.

Source

meta.lisp.

Direct superclasses
Direct slots
Slot: col-null-p
Initform

t

Slot: col-unique-p
Slot: col-primary-p
Slot: col-index-p
Slot: col-foreign
Slot: col-autoincrement-p
Slot: col-check
Initargs

nil

Class: table-class-effective-slot-definition
Package

crane.meta.

Source

meta.lisp.

Direct superclasses
Class: table-class-slot-definition-mixin
Package

crane.meta.

Source

meta.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: col-type
Initargs

:col-type

Readers

col-type.

Writers

(setf col-type).

Slot: col-null-p
Initargs

:col-null-p

Readers

col-null-p.

Writers

This slot is read-only.

Slot: col-unique-p
Initargs

:col-unique-p

Readers

col-unique-p.

Writers

This slot is read-only.

Slot: col-primary-p
Initargs

:col-primary-p

Readers

col-primary-p.

Writers

This slot is read-only.

Slot: col-index-p
Initargs

:col-index-p

Readers

col-index-p.

Writers

This slot is read-only.

Slot: col-foreign
Initargs

:col-foreign

Readers

col-foreign.

Writers

This slot is read-only.

Slot: col-autoincrement-p
Initargs

:col-autoincrement-p

Readers

col-autoincrement-p.

Writers

This slot is read-only.

Slot: col-check
Initargs

:col-check

Readers

col-check.

Writers

This slot is read-only.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   I   K   L   M   P   Q   R   S   T   V   W  
Index Entry  Section

%
%table-database: Private generic functions
%table-database: Private generic functions

(
(setf col-type): Public generic functions
(setf col-type): Public generic functions
(setf database-connection): Public generic functions
(setf database-connection): Public generic functions

A
abstractp: Public generic functions
abstractp: Public generic functions
add-constraint: Public ordinary functions
add-default-slots: Private ordinary functions
alter-constraint: Public ordinary functions
any-concrete-superclasses: Private ordinary functions
autoincrement-sql: Private ordinary functions

B
begin-transaction: Public ordinary functions
build: Public ordinary functions

C
clean-tuple: Private generic functions
clean-tuple: Private generic functions
col-autoincrement-p: Public generic functions
col-autoincrement-p: Public generic functions
col-check: Public generic functions
col-check: Public generic functions
col-foreign: Public generic functions
col-foreign: Public generic functions
col-index-p: Public generic functions
col-index-p: Public generic functions
col-null-p: Public generic functions
col-null-p: Public generic functions
col-primary-p: Public generic functions
col-primary-p: Public generic functions
col-type: Public generic functions
col-type: Public generic functions
col-unique-p: Public generic functions
col-unique-p: Public generic functions
commit: Public ordinary functions
compute-effective-slot-definition: Public standalone methods
connect: Public ordinary functions
constraint-name: Private ordinary functions
create: Public macros
create%: Public macros
create-and-sort-constraints: Public ordinary functions
create-column-constraints: Private ordinary functions
create-from-plist: Public macros
create-table: Public ordinary functions

D
database-connection: Public generic functions
database-connection: Public generic functions
database-connection-spec: Private generic functions
database-connection-spec: Private generic functions
database-name: Public generic functions
database-name: Public generic functions
database-type: Public generic functions
database-type: Public generic functions
debugp: Public ordinary functions
defdeflate: Public macros
deferredp: Public generic functions
deferredp: Public generic functions
define-column: Public ordinary functions
definflate: Public macros
deflate: Public generic functions
deflate: Public generic functions
deflate: Public generic functions
deflate: Public generic functions
deflate: Public generic functions
deftable: Public macros
del: Public generic functions
del: Public generic functions
delete-migrations: Public ordinary functions
deref: Public macros
diff-digest: Public ordinary functions
diff-plist: Public ordinary functions
diff-slot: Private ordinary functions
digest: Public generic functions
digest: Public generic functions
digest-slot: Private ordinary functions
direct-slot-definition-class: Public standalone methods
disconnect: Public ordinary functions
do-filter: Public macros
do-query: Public macros
drop-column: Public ordinary functions
drop-constraint: Public ordinary functions
drop-table: Public generic functions
drop-table: Public generic functions
drop-table: Public generic functions

E
effective-slot-definition-class: Public standalone methods
enforce-foreign-keys: Private ordinary functions
exists: Public macros

F
filter: Public macros
find-class-slot: Public ordinary functions
find-slot: Public ordinary functions
foreign: Private ordinary functions
Function, add-constraint: Public ordinary functions
Function, add-default-slots: Private ordinary functions
Function, alter-constraint: Public ordinary functions
Function, any-concrete-superclasses: Private ordinary functions
Function, autoincrement-sql: Private ordinary functions
Function, begin-transaction: Public ordinary functions
Function, build: Public ordinary functions
Function, commit: Public ordinary functions
Function, connect: Public ordinary functions
Function, constraint-name: Private ordinary functions
Function, create-and-sort-constraints: Public ordinary functions
Function, create-column-constraints: Private ordinary functions
Function, create-table: Public ordinary functions
Function, debugp: Public ordinary functions
Function, define-column: Public ordinary functions
Function, delete-migrations: Public ordinary functions
Function, diff-digest: Public ordinary functions
Function, diff-plist: Public ordinary functions
Function, diff-slot: Private ordinary functions
Function, digest-slot: Private ordinary functions
Function, disconnect: Public ordinary functions
Function, drop-column: Public ordinary functions
Function, drop-constraint: Public ordinary functions
Function, enforce-foreign-keys: Private ordinary functions
Function, find-class-slot: Public ordinary functions
Function, find-slot: Public ordinary functions
Function, foreign: Private ordinary functions
Function, get-class-slot: Public ordinary functions
Function, get-config-value: Public ordinary functions
Function, get-configuration: Public ordinary functions
Function, get-connection: Public ordinary functions
Function, get-db: Public ordinary functions
Function, get-last-migration: Public ordinary functions
Function, get-migration-dir: Private ordinary functions
Function, get-slot: Public ordinary functions
Function, insert-migration: Public ordinary functions
Function, load-driver: Private ordinary functions
Function, make-constraint: Public ordinary functions
Function, make-keyword: Public ordinary functions
Function, make-set: Private ordinary functions
Function, map-ref-action: Private ordinary functions
Function, migrate: Public ordinary functions
Function, migration-history-p: Public ordinary functions
Function, migration-history-pathname: Private ordinary functions
Function, plist-keys: Public ordinary functions
Function, process-slot: Private ordinary functions
Function, read-migration-history: Private ordinary functions
Function, rename-migration-history: Public ordinary functions
Function, rollback: Public ordinary functions
Function, separate-slots-and-options: Private ordinary functions
Function, serialize: Private ordinary functions
Function, serialize-plist: Private ordinary functions
Function, set-index: Private ordinary functions
Function, set-null: Private ordinary functions
Function, set-primary: Private ordinary functions
Function, set-proper-quote-character: Private ordinary functions
Function, set-unique: Private ordinary functions
Function, setup: Public ordinary functions
Function, sort-slot-list: Private ordinary functions
Function, sqlize: Public ordinary functions
Function, validate-all-databases: Private ordinary functions
Function, validate-connection-spec: Private ordinary functions

G
Generic Function, %table-database: Private generic functions
Generic Function, (setf col-type): Public generic functions
Generic Function, (setf database-connection): Public generic functions
Generic Function, abstractp: Public generic functions
Generic Function, clean-tuple: Private generic functions
Generic Function, col-autoincrement-p: Public generic functions
Generic Function, col-check: Public generic functions
Generic Function, col-foreign: Public generic functions
Generic Function, col-index-p: Public generic functions
Generic Function, col-null-p: Public generic functions
Generic Function, col-primary-p: Public generic functions
Generic Function, col-type: Public generic functions
Generic Function, col-unique-p: Public generic functions
Generic Function, database-connection: Public generic functions
Generic Function, database-connection-spec: Private generic functions
Generic Function, database-name: Public generic functions
Generic Function, database-type: Public generic functions
Generic Function, deferredp: Public generic functions
Generic Function, deflate: Public generic functions
Generic Function, del: Public generic functions
Generic Function, digest: Public generic functions
Generic Function, drop-table: Public generic functions
Generic Function, inflate: Public generic functions
Generic Function, key: Private generic functions
Generic Function, make-connection: Private generic functions
Generic Function, plist->object: Public generic functions
Generic Function, save: Public generic functions
Generic Function, slot-tuple: Private generic functions
Generic Function, table-database: Public generic functions
Generic Function, table-name: Public generic functions
Generic Function, text: Private generic functions
get-class-slot: Public ordinary functions
get-config-value: Public ordinary functions
get-configuration: Public ordinary functions
get-connection: Public ordinary functions
get-db: Public ordinary functions
get-last-migration: Public ordinary functions
get-migration-dir: Private ordinary functions
get-slot: Public ordinary functions

I
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
inflate: Public generic functions
insert-migration: Public ordinary functions

K
key: Private generic functions
key: Private generic functions

L
load-driver: Private ordinary functions

M
Macro, create: Public macros
Macro, create%: Public macros
Macro, create-from-plist: Public macros
Macro, defdeflate: Public macros
Macro, definflate: Public macros
Macro, deftable: Public macros
Macro, deref: Public macros
Macro, do-filter: Public macros
Macro, do-query: Public macros
Macro, exists: Public macros
Macro, filter: Public macros
Macro, meta-query: Public macros
Macro, query: Public macros
Macro, single: Public macros
Macro, single!: Public macros
Macro, single-or-create: Public macros
Macro, with-transaction: Public macros
make-connection: Private generic functions
make-connection: Private generic functions
make-constraint: Public ordinary functions
make-keyword: Public ordinary functions
make-set: Private ordinary functions
map-ref-action: Private ordinary functions
meta-query: Public macros
Method, %table-database: Private generic functions
Method, (setf col-type): Public generic functions
Method, (setf database-connection): Public generic functions
Method, abstractp: Public generic functions
Method, clean-tuple: Private generic functions
Method, col-autoincrement-p: Public generic functions
Method, col-check: Public generic functions
Method, col-foreign: Public generic functions
Method, col-index-p: Public generic functions
Method, col-null-p: Public generic functions
Method, col-primary-p: Public generic functions
Method, col-type: Public generic functions
Method, col-unique-p: Public generic functions
Method, compute-effective-slot-definition: Public standalone methods
Method, database-connection: Public generic functions
Method, database-connection-spec: Private generic functions
Method, database-name: Public generic functions
Method, database-type: Public generic functions
Method, deferredp: Public generic functions
Method, deflate: Public generic functions
Method, deflate: Public generic functions
Method, deflate: Public generic functions
Method, deflate: Public generic functions
Method, del: Public generic functions
Method, digest: Public generic functions
Method, direct-slot-definition-class: Public standalone methods
Method, drop-table: Public generic functions
Method, drop-table: Public generic functions
Method, effective-slot-definition-class: Public standalone methods
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, inflate: Public generic functions
Method, key: Private generic functions
Method, make-connection: Private generic functions
Method, plist->object: Public generic functions
Method, plist->object: Public generic functions
Method, register-fixture: Public standalone methods
Method, save: Public generic functions
Method, slot-tuple: Private generic functions
Method, table-database: Public generic functions
Method, table-name: Public generic functions
Method, text: Private generic functions
Method, validate-superclass: Public standalone methods
Method, validate-superclass: Public standalone methods
migrate: Public ordinary functions
migration-history-p: Public ordinary functions
migration-history-pathname: Private ordinary functions

P
plist->object: Public generic functions
plist->object: Public generic functions
plist->object: Public generic functions
plist-keys: Public ordinary functions
process-slot: Private ordinary functions

Q
query: Public macros

R
read-migration-history: Private ordinary functions
register-fixture: Public standalone methods
rename-migration-history: Public ordinary functions
rollback: Public ordinary functions

S
save: Public generic functions
save: Public generic functions
separate-slots-and-options: Private ordinary functions
serialize: Private ordinary functions
serialize-plist: Private ordinary functions
set-index: Private ordinary functions
set-null: Private ordinary functions
set-primary: Private ordinary functions
set-proper-quote-character: Private ordinary functions
set-unique: Private ordinary functions
setup: Public ordinary functions
single: Public macros
single!: Public macros
single-or-create: Public macros
slot-tuple: Private generic functions
slot-tuple: Private generic functions
sort-slot-list: Private ordinary functions
sqlize: Public ordinary functions

T
table-database: Public generic functions
table-database: Public generic functions
table-name: Public generic functions
table-name: Public generic functions
text: Private generic functions
text: Private generic functions

V
validate-all-databases: Private ordinary functions
validate-connection-spec: Private ordinary functions
validate-superclass: Public standalone methods
validate-superclass: Public standalone methods

W
with-transaction: Public macros


A.3 Variables

Jump to:   *   +  
A   C   D   K   N   S   T  
Index Entry  Section

*
*after-config-hook*: Public special variables
*config*: Private special variables
*db*: Private special variables
*default-db*: Public special variables

+
+create-table-format-string+: Private special variables
+db-params+: Private special variables
+referential-actions+: Private special variables
+slot-mapping+: Private special variables
+standard-class-options+: Private special variables
+system-mapping+: Private special variables

A
abstractp: Public classes

C
col-autoincrement-p: Private classes
col-autoincrement-p: Private classes
col-check: Private classes
col-check: Private classes
col-foreign: Private classes
col-foreign: Private classes
col-index-p: Private classes
col-index-p: Private classes
col-null-p: Private classes
col-null-p: Private classes
col-primary-p: Private classes
col-primary-p: Private classes
col-type: Private classes
col-unique-p: Private classes
col-unique-p: Private classes
conn: Public classes
conn-spec: Public classes

D
database: Public classes
deferredp: Public classes

K
key: Public conditions

N
name: Public classes

S
Slot, abstractp: Public classes
Slot, col-autoincrement-p: Private classes
Slot, col-autoincrement-p: Private classes
Slot, col-check: Private classes
Slot, col-check: Private classes
Slot, col-foreign: Private classes
Slot, col-foreign: Private classes
Slot, col-index-p: Private classes
Slot, col-index-p: Private classes
Slot, col-null-p: Private classes
Slot, col-null-p: Private classes
Slot, col-primary-p: Private classes
Slot, col-primary-p: Private classes
Slot, col-type: Private classes
Slot, col-unique-p: Private classes
Slot, col-unique-p: Private classes
Slot, conn: Public classes
Slot, conn-spec: Public classes
Slot, database: Public classes
Slot, deferredp: Public classes
Slot, key: Public conditions
Slot, name: Public classes
Slot, text: Private conditions
Slot, type: Public classes
Special Variable, *after-config-hook*: Public special variables
Special Variable, *config*: Private special variables
Special Variable, *db*: Private special variables
Special Variable, *default-db*: Public special variables
Special Variable, +create-table-format-string+: Private special variables
Special Variable, +db-params+: Private special variables
Special Variable, +referential-actions+: Private special variables
Special Variable, +slot-mapping+: Private special variables
Special Variable, +standard-class-options+: Private special variables
Special Variable, +system-mapping+: Private special variables

T
text: Private conditions
type: Public classes


A.4 Data types

Jump to:   <  
B   C   D   E   F   I   M   N   P   Q   S   T   U   V  
Index Entry  Section

<
<database>: Public classes
<table-class>: Public classes
<table>: Public classes

B
bigint: Public types

C
Class, <database>: Public classes
Class, <table-class>: Public classes
Class, <table>: Public classes
Class, table-class-direct-slot-definition: Private classes
Class, table-class-effective-slot-definition: Private classes
Class, table-class-slot-definition-mixin: Private classes
Condition, configuration-error: Public conditions
Condition, crane-error: Private conditions
Condition, empty-table: Public conditions
Condition, no-configuration-error: Public conditions
Condition, query-error: Public conditions
config.lisp: The crane/src/config․lisp file
configuration-error: Public conditions
connect.lisp: The crane/src/connect․lisp file
crane: The crane system
crane: The crane package
crane-error: Private conditions
crane.asd: The crane/crane․asd file
crane.config: The crane․config package
crane.connect: The crane․connect package
crane.errors: The crane․errors package
crane.fixture: The crane․fixture package
crane.inflate-deflate: The crane․inflate-deflate package
crane.interface: The crane․interface package
crane.lisp: The crane/src/crane․lisp file
crane.meta: The crane․meta package
crane.migration: The crane․migration package
crane.query: The crane․query package
crane.sql: The crane․sql package
crane.table: The crane․table package
crane.transaction: The crane․transaction package
crane.types: The crane․types package
crane.util: The crane․util package

D
datetime: Public types
double: Public types

E
empty-table: Public conditions
errors.lisp: The crane/src/errors․lisp file

F
File, config.lisp: The crane/src/config․lisp file
File, connect.lisp: The crane/src/connect․lisp file
File, crane.asd: The crane/crane․asd file
File, crane.lisp: The crane/src/crane․lisp file
File, errors.lisp: The crane/src/errors․lisp file
File, fixture.lisp: The crane/src/fixture․lisp file
File, inflate-deflate.lisp: The crane/src/inflate-deflate․lisp file
File, interface.lisp: The crane/src/interface․lisp file
File, meta.lisp: The crane/src/meta․lisp file
File, migration.lisp: The crane/src/migration․lisp file
File, query.lisp: The crane/src/query․lisp file
File, sql.lisp: The crane/src/sql․lisp file
File, table.lisp: The crane/src/table․lisp file
File, transaction.lisp: The crane/src/transaction․lisp file
File, types.lisp: The crane/src/types․lisp file
File, util.lisp: The crane/src/util․lisp file
fixture.lisp: The crane/src/fixture․lisp file

I
inflate-deflate.lisp: The crane/src/inflate-deflate․lisp file
int: Public types
interface.lisp: The crane/src/interface․lisp file

M
meta.lisp: The crane/src/meta․lisp file
migration.lisp: The crane/src/migration․lisp file
Module, src: The crane/src module

N
no-configuration-error: Public conditions
numeric: Public types

P
Package, crane: The crane package
Package, crane.config: The crane․config package
Package, crane.connect: The crane․connect package
Package, crane.errors: The crane․errors package
Package, crane.fixture: The crane․fixture package
Package, crane.inflate-deflate: The crane․inflate-deflate package
Package, crane.interface: The crane․interface package
Package, crane.meta: The crane․meta package
Package, crane.migration: The crane․migration package
Package, crane.query: The crane․query package
Package, crane.sql: The crane․sql package
Package, crane.table: The crane․table package
Package, crane.transaction: The crane․transaction package
Package, crane.types: The crane․types package
Package, crane.util: The crane․util package

Q
query-error: Public conditions
query.lisp: The crane/src/query․lisp file

S
smallint: Public types
sql.lisp: The crane/src/sql․lisp file
src: The crane/src module
System, crane: The crane system

T
table-class-direct-slot-definition: Private classes
table-class-effective-slot-definition: Private classes
table-class-slot-definition-mixin: Private classes
table.lisp: The crane/src/table․lisp file
text: Public types
timestamp: Public types
transaction.lisp: The crane/src/transaction․lisp file
Type, bigint: Public types
Type, datetime: Public types
Type, double: Public types
Type, int: Public types
Type, numeric: Public types
Type, smallint: Public types
Type, text: Public types
Type, timestamp: Public types
Type, varchar: Public types
types.lisp: The crane/src/types․lisp file

U
util.lisp: The crane/src/util․lisp file

V
varchar: Public types