| 1 | (in-package :lisp-on-lines) |
| 2 | |
| 3 | ;;;; *LoL Entry points |
| 4 | ;;;; |
| 5 | |
| 6 | ;;;; This file contains the high level functions and macros |
| 7 | ;;;; that are part of LoL proper, that is to say, not Mewa |
| 8 | ;;;; or Meta-Model. |
| 9 | |
| 10 | ;;;; ** Initialisation |
| 11 | ;;;; The following macros are used to initialise a set of database tables as LoL objects. |
| 12 | (eval-when (:compile-toplevel :load-toplevel :execute) |
| 13 | (defun generate-initialize-lol-for-table (table) |
| 14 | " |
| 15 | Generates a form that, when evaluated, initialises the given table as an lol object. |
| 16 | This involves creating a meta-model, a clsql view-class, and the setting up the default attributes for a mewa presentation" |
| 17 | |
| 18 | `(progn |
| 19 | (def-view-class/table ,table) |
| 20 | (set-default-attributes (quote ,(meta-model::sql->sym table)))))) |
| 21 | |
| 22 | (defmacro initialize-lol-for-table (&rest tables) |
| 23 | " expand to a form which initialises TABLES for use with LOL" |
| 24 | `(progn |
| 25 | ,@(loop for tbl in tables collect (generate-initialize-lol-for-table tbl)) |
| 26 | (values))) |
| 27 | |
| 28 | (defmacro initialize-lol-for-database () |
| 29 | "expands to init-i-f-t using the listing of tables provided by meta-model" |
| 30 | `(initialize-lol-for-table ,@(meta-model::list-tables))) |