1 (in-package #:clsql-tests)
3 (clsql-sys:file-enable-sql-reader-syntax)
5 (defparameter basenode nil)
6 (defparameter derivednode1 nil)
7 (defparameter derivednode2 nil)
8 (defparameter node nil)
9 (defparameter setting1 nil)
10 (defparameter setting2 nil)
11 (defparameter user1 nil)
12 (defparameter user2 nil)
13 (defparameter theme1 nil)
14 (defparameter theme2 nil)
15 (defparameter loc1 nil)
16 (defparameter loc2 nil)
17 (defparameter subloc1 nil)
18 (defparameter subloc2 nil)
22 ;; classes for testing the normalizedp stuff
23 (def-view-class node ()
24 ((node-id :accessor node-id :initarg :node-id
25 :type integer :db-kind :key
26 :db-constraints (:not-null :auto-increment))
27 (title :accessor title :initarg :title :type (varchar 240))
28 (createtime :accessor createtime :initarg :createtime :type wall-time
29 :db-constraints (:not-null) :initform (get-time))
30 (modifiedtime :accessor modifiedtime :initarg :modifiedtime :type wall-time
31 :initform (make-time :year 1900 :month 1 :day 1))))
33 (def-view-class setting (node)
34 ((setting-id :accessor setting-id :initarg :setting-id
35 :type integer :db-kind :key :db-constraints (:not-null :auto-increment))
36 (vars :accessor vars :initarg :vars :type (varchar 240)))
39 (def-view-class user (node)
40 ((user-id :accessor user-id :initarg :user-id
41 :type integer :db-kind :key :db-constraints (:not-null :auto-increment))
42 (nick :accessor nick :initarg :nick :type (varchar 64)))
43 (:base-table "nodeuser")
46 (def-view-class theme (setting)
47 ((theme-id :accessor theme-id :initarg :theme-id
48 :type integer :db-kind :key :db-constraints (:not-null :auto-increment))
49 (doc :accessor doc :initarg :doc :type (varchar 240)))
52 ;; A class that uses only a superclass db table
53 (def-view-class location (node)
58 (def-view-class subloc (location)
59 ((subloc-id :accessor subloc-id :initarg :subloc-id
60 :type integer :db-kind :key :db-constraints (:not-null :auto-increment))
61 (loc :accessor loc :initarg :loc :type (varchar 64)))
66 (defun initialize-ds-nodes ()
67 ;; (start-sql-recording :type :both)
68 (let ((*backend-warning-behavior*
69 (if (member *test-database-type* '(:postgresql :postgresql-socket))
72 (mapc #'clsql:create-view-from-class
73 '(node setting user theme location subloc)))
75 (setq *test-start-utime* (get-universal-time))
76 (let* ((*db-auto-sync* t))
77 (setf node (make-instance 'node
79 setting1 (make-instance 'setting
82 setting2 (make-instance 'setting
85 user1 (make-instance 'user
88 user2 (make-instance 'user
91 theme1 (make-instance 'theme
95 theme2 (make-instance 'theme
98 loc1 (make-instance 'location
100 loc2 (make-instance 'location
102 subloc1 (make-instance 'subloc
105 subloc2 (make-instance 'subloc
107 :loc "second subloc"))))
112 (def-dataset *ds-nodes*
113 (:setup initialize-ds-nodes)
115 (mapc #'clsql-sys:drop-view-from-class
116 '(node setting user theme location subloc))
118 (clsql-sys:execute-command "DROP TABLE nodeuser")
119 (mapc #'clsql-sys:drop-sequence
120 '(node_node_id_seq setting_setting_id_seq subloc_subloc_id_seq
121 theme_theme_id_seq nodeuser_user_id_seq)