view base/database/implementations-setup.lisp @ 242:66f9c2913ac7

twiddle midi-db import example Ignore-this: cf975529b1d8ad8af507e7dd2144ccea darcs-hash:20100416180846-16a00-a91855cc12370a9198448353f4438647d4cdfdae.gz committer: Jamie Forth <j.forth@gold.ac.uk>
author j.forth <j.forth@gold.ac.uk>
date Thu, 24 Feb 2011 11:23:18 +0000
parents 385935631532
children 6a3adca16910
line wrap: on
line source
(cl:in-package #:amuse-database-admin)

(defun create-implementations-table (&optional
				     (database *amuse-database*))
  (%create-implementations-table database)
  (%create-implementation-stored-routines database))

(defun drop-implementations-table (&optional
				   (database *amuse-database*))
  (%drop-implementations-table database)
  (%drop-implementation-stored-routines database))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Helper functions

(defun %create-implementations-table (database)
  #.(clsql:locally-enable-sql-reader-syntax)
  (clsql:create-table "amuse_implementations"
		      '(([|implementation-id|] clsql:smallint :unsigned
			 :not-null :auto-increment :primary-key)
			([|implementation-name|] (varchar 255)
			 :not-null :unique))
		      :database database
		      :transactions t)
  #.(clsql:locally-disable-sql-reader-syntax))

(defun %drop-implementations-table (database)
  (clsql:drop-table "amuse_implementations"
		    :if-does-not-exist :ignore
		    :database database))

(defun %create-implementation-stored-routines (database)
  (%create-db-fun-get-impl-id database)
  (%create-db-fun-get-impl-name database))

(defun %drop-implementation-stored-routines (database)
  (%drop-db-fun-get-impl-id database)
  (%drop-db-fun-get-impl-name database))

(defun %create-db-fun-get-impl-id (database)
  (clsql:execute-command "
CREATE FUNCTION get_impl_id (
impl_name VARCHAR(255))
RETURNS SMALLINT
READS SQL DATA
RETURN (SELECT implementation_id
FROM amuse_implementations
WHERE implementation_name = impl_name);"
			 :database database))

(defun %drop-db-fun-get-impl-id (database)
  (clsql:execute-command "
DROP FUNCTION get_impl_id"
			 :database database))

(defun %create-db-fun-get-impl-name (database)
  (clsql:execute-command "
CREATE FUNCTION get_impl_name (
impl_id SMALLINT)
RETURNS VARCHAR(255)
READS SQL DATA
RETURN (SELECT implementation_name
FROM amuse_implementations
WHERE implementation_id = impl_id);"
			 :database database))

(defun %drop-db-fun-get-impl-name (database)
  (clsql:execute-command "
DROP FUNCTION get_impl_name"
			 :database database))