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