Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A common lisp object / relational mapping library, the goal of which, is to generate common lisp objects from a running database schema

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 examples
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.clsql-postgres-introspect
Octocat-spinner-32 README.md
Octocat-spinner-32 clsql-orm.asd
Octocat-spinner-32 main.lisp
Octocat-spinner-32 mysql.lisp
Octocat-spinner-32 package.lisp
Octocat-spinner-32 sqlite3.lisp
README.md

CLSQL-ORM

Use this package to help with introspective operations against databases that support information_schema . It supports generating view-class definitions from the database schema.

This was originally clsql-postgres-introspect, though this is a bit far removed from that.

I have used this to successfully generate view-classes for PostgreSQL, MSSQL (through freetds and unixodbc), and mysql.

This project does not attempt to be a persistence layer. It also makes quite a few assumptions about what should be generated and with what types that may not match your desires or existing notions. As such this code might only be useful as a jumping off point for creating your own custom clsql ORM.

Examples

Please see the examples directory

(with-a-database (*application*) ;; a clsql-helper macro that sets up clsql:*default-database* 
  (clsql-orm:gen-view-classes
   :inherits-from '(pg-db-obj) ;; a class I have that I want all my pg-db-objects to inherit from
   :classes 
   ;; The tables I want to turn into classes
   '(users user_districts_and_counties titles salaries roles fiscal-years expenses budgets counties
     districts counties-with-districts reports data-entry-finalizations
     specialties bad-state-salary-input races)))
(clsql-orm:gen-view-classes
   :inherits-from '(pg-db-obj) ;; a class I have that I want all my pg-db-objects to inherit from
   :classes 
   ;; The tables I want to turn into classes
   '(users))

;;; Results in the following class definition being evaled:
(def-view-class user (pg-db-obj)
  ((date-entered :column date_entered :accessor date-entered
         :db-constraints nil :type wall-time :initarg
         date-entered)
   (deleted :column deleted :accessor deleted :db-constraints nil
        :type boolean :initarg deleted)
   (email :column email :accessor email :db-constraints (not-null)
      :type (varchar 128) :initarg email)
   (enabled :column enabled :accessor enabled :db-constraints
        (not-null) :initform t :type boolean :initarg enabled)
   (first-name :column first_name :accessor first-name
           :db-constraints nil :initform nil :type varchar
           :initarg first-name)
   (id :column id :accessor id :db-kind key :db-constraints
       (not-null) :type integer :initarg id)
   (last-name :column last_name :accessor last-name :db-constraints
          nil :initform nil :type varchar :initarg last-name)
   (password :column password :accessor password :db-constraints
         (not-null) :type (varchar 32) :initarg password)
   (role-id :column role_id :accessor role-id :db-constraints
        (not-null) :type integer :initarg role-id)
   (role-join :accessor role-join :db-kind join :db-info
          (join-class role :home-key role-id :foreign-key id
              :set nil))
   (salt :column salt :accessor salt :db-constraints (not-null) :type
     (varchar 4) :initarg salt))
  (base-table users))

Authors

Authors of this Branch

Author of MySQL Bug Fixes

Scott Brown brown131@yahoo.com

Original Author information

Alan Shields Alan-Shields@omrf.ouhsc.edu

This work was made possible by the Centola Lab of the Oklahoma Medical Research Foundation

License information is in the file LICENSE (LLGPL)

Something went wrong with that request. Please try again.