Package Submarine - internal and external symbols

See only external symbols
A very simple quasi-object persistency system built on top of Postmodern.
Package Submarine uses the packages Cl-Postgres, Common-Lisp, Iterate, Mop-Utils, S-Sql and Sb-Mop. It has 136 total symbols and 30 external ones.


dao-errorBase class for DAO related errors.
dao-nonexistent-idCondition signaling the attempt to initialize a dao
with a non-existant ID.
sql-column-does-not-existCondition signaling a missing column in an existing table.
sql-column-errorAn error symbolizing that there is a column of the
right name in the table, but its type is wrong
sql-errorBase class for SQL related errors.
unresolved-foreign-keyCondition signaling that a class with a foreign-key
reference to a non-defined class has been tri...


daoBase class for any PostgreSQL aware classes.
db-classMetaclass for PostgreSQL aware classes. It takes
two additional arguments in DEFTABLE: :INDICES (...


class-db-slotsReturn the list of non-transient, instance allocated slots of a class.
db-slots-ofList of non-transient, instance allocated slots of OBJECT
get-daoGet the dao corresponding to the given primary key,
or return nil if it does not exist.
make-daoCreate a DAO of the given `TYPE' and initialize it according
to the values of the alist `INITAR...
non-db-slotSlot is transient or its allocation is :CLASS.
query-dao-funExecute the given `QUERY' (which can be either a string or a
S-SQL expression, which will be eval...
relateMake OBJECT1 and OBJECT2 enter into the many-to-many relation
`RELATION'. If `RELATION' is not pr...
relatedpTell whether `OBJECT1' and `OBJECT2' are in the many-to-many relation
`RELATION' (or the unnamed ...
select-dao-funFunctional interface for SELECT-DAO.
slot-value-or-id-if-foreignSLOT-VALUE if SLOT in OBJECT is not foreign, the ID of the object
in the slot otherwise. If the o...
unrelate`OBJECT1' stops being with `OBJECT2' in `RELATION'.
with-class-connection-funFunctional interface to the macro WITH-CLASS-CONNECTION. the
connection will be pooled.
with-connection-funFunctional interface to the macro WITH-CONNECTION.
with-object-connection-funFunctional interface to the macro WITH-OBJECT-CONNECTION.


add-constraintAdd a constraint to this slot's class' table.
create-tableCreate a table whose columns match the fields of
CLASS in the connected database. If CLASS is a s...
dao-exists-pReturn a boolean indicating whether the given DAO
exists in the database.
dao=T if all the slot-values of `LEFT' and `RIGHT'
are the same. If the compared values are not DAO...
database-consistent-with-specificationReturn nothing if TABLE in the connected-p database
meets its specification. Otherwise, throw an ...
delete-daoDelete the given dao from the database.
get-allGet all objects of TYPE that stand in a many-to-one
relation with OBJECT.
insert-daoInsert the given DAO into the database.
relate-methodRelate `OBJECT1' with `OBJECT2' in `RELATION'.
relatedp-methodTell if `OBJECT1' is related to `OBJECT2' in `RELATION'.
remove-finished-classesRemove classes that are already finished from UNFINISHED-CLASSES of CLASS.
save-daoSave a dao: update it when it already exists, insert it otherwise.
try-delayed-constraintsTry to call all the delayed constraints present.
unrelate-method`OBJECT1' stops being with `OBJECT2' in `RELATION'.
update-daoUpdate the DAO's representation in the database
with the values in the given object and return it...


def-many-to-manyDefines a possibly named many-to-many mapping between two
persistent classes. There can be only o...
defdaoWrapper macro for defining a class inheriting from DAO and with the
metaclass set to DB-CLASS.
make-and-saveMake a DAO and immediately save it. Takes the same arguments as
(make-instance ((dao dao))).
query-daoExecute the given `QUERY' (which can be either a string or a
S-SQL expression, which won't be eva...
select-daoSelect daos of TYPE for the rows in its table for which the given TEST
with-class-connectionRun BODY in an environment with an always pooled connection to the database
specified by the DB-C...
with-connectionBinds *database* to a new connection and runs body in that scope.
with-object-connectionRun BODY in an environment with a connection to the database
specified by the DB-CLASS-CONNECTION...