(ql:quickload "sqlite") (defparameter *users* nil) (defparameter *posts* nil) (defparameter *db* (sqlite:connect "forum.db")) (defclass user-class () ((id :initform (length *users*) :accessor id) (name :accessor name :initarg :name) (pwd :accessor pwd :initform nil) (posts :accessor posts :initform nil :initarg :posts) (answers :accessor answers :initform nil :initarg :answers))) (defun user-to-sql (user) (sqlite:execute-non-query *db* "insert into users (id,name,pwd,posts,answers) values(?,?,?,?,?)" (id user) (name user) (pwd user) (write-to-string (posts user)) (write-to-string (answers user)))) (defun create-user-from-list (user-list) (let ((user (make-instance 'user-class))) (setf (id user) (car user-list)) (setf (name user) (cadr user-list)) (setf (pwd user) (caddr user-list)) (setf (posts user) (cadddr user-list)) (setf (answers user) (car (cddddr user-list))) (push user *users*))) (defun parse-user-sql () (let ((users (sqlite:execute-to-list *db* "select * from users"))) (mapcar #'create-user-from-list users)))