j@287: (cl:in-package #:amuse-database-admin) j@287: j@287: (defun create-implementations-table (&optional j@287: (database *amuse-database*)) j@287: (%create-implementations-table database) j@287: (%create-implementation-stored-routines database)) j@287: j@287: (defun drop-implementations-table (&optional j@287: (database *amuse-database*)) j@287: (%drop-implementations-table database) j@287: (%drop-implementation-stored-routines database)) j@287: j@287: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; j@287: ;;; Helper functions j@287: j@287: (defun %create-implementations-table (database) j@287: #.(clsql:locally-enable-sql-reader-syntax) j@287: (clsql:create-table "amuse_implementations" j@287: '(([|implementation-id|] clsql:smallint :unsigned j@287: :not-null :auto-increment :primary-key) j@287: ([|implementation-name|] (varchar 255) j@287: :not-null :unique)) j@287: :database database j@287: :transactions t) j@287: #.(clsql:locally-disable-sql-reader-syntax)) j@287: j@287: (defun %drop-implementations-table (database) j@287: (clsql:drop-table "amuse_implementations" j@287: :if-does-not-exist :ignore j@287: :database database)) j@287: j@287: (defun %create-implementation-stored-routines (database) j@287: (%create-db-fun-get-impl-id database) j@287: (%create-db-fun-get-impl-name database)) j@287: j@287: (defun %drop-implementation-stored-routines (database) j@287: (%drop-db-fun-get-impl-id database) j@287: (%drop-db-fun-get-impl-name database)) j@287: j@287: (defun %create-db-fun-get-impl-id (database) j@287: (clsql:execute-command " j@287: CREATE FUNCTION get_impl_id ( j@287: impl_name VARCHAR(255)) j@287: RETURNS SMALLINT j@289: READS SQL DATA j@287: RETURN (SELECT implementation_id j@287: FROM amuse_implementations j@287: WHERE implementation_name = impl_name);" j@287: :database database)) j@287: j@287: (defun %drop-db-fun-get-impl-id (database) j@287: (clsql:execute-command " j@287: DROP FUNCTION get_impl_id" j@287: :database database)) j@287: j@287: (defun %create-db-fun-get-impl-name (database) j@287: (clsql:execute-command " j@287: CREATE FUNCTION get_impl_name ( j@287: impl_id SMALLINT) j@287: RETURNS VARCHAR(255) j@289: READS SQL DATA j@287: RETURN (SELECT implementation_name j@287: FROM amuse_implementations j@287: WHERE implementation_id = impl_id);" j@287: :database database)) j@287: j@287: (defun %drop-db-fun-get-impl-name (database) j@287: (clsql:execute-command " j@287: DROP FUNCTION get_impl_name" j@287: :database database))