diff options
author | Aspen Smith <root@gws.fyi> | 2024-04-13T14·31-0400 |
---|---|---|
committer | aspen <root@gws.fyi> | 2024-04-19T18·42+0000 |
commit | 413441e2f2266db58094bbf305ba736e5586708f (patch) | |
tree | e3af48dba4c2e4644ef317c72e987e02243c5cfb /web/panettone/src/model.lisp | |
parent | 594600cd4a253d652ff0dddd914c4fba4465a5e6 (diff) |
feat(web/panettone): Create users table r/7963
Create a (currently unused) table to store information about users. I'll be manually migrating over all the information about users into this table, then will make a subsequent CL to make the rest of the tables foreign-key into this table Change-Id: I1b1c4b50c4a61326df3382809f701947a2caf536 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11411 Autosubmit: aspen <root@gws.fyi> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
Diffstat (limited to 'web/panettone/src/model.lisp')
-rw-r--r-- | web/panettone/src/model.lisp | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/web/panettone/src/model.lisp b/web/panettone/src/model.lisp index 15fe4815be1a..a106e9479bb2 100644 --- a/web/panettone/src/model.lisp +++ b/web/panettone/src/model.lisp @@ -39,6 +39,22 @@ initialised at launch time.") ;;; Schema ;;; +(defclass user () + ((sub :col-type uuid :initarg :sub :accessor sub + :documentation + "ID for the user in the authentication provider. Taken from the `:SUB' + field in the JWT when the user first logged in") + (username :col-type string :initarg :username :accessor username) + (email :col-type string :initarg :email :accessor email)) + (:metaclass dao-class) + (:keys sub) + (:table-name users) + (:documentation + "Panettone users. Uses an external authentication provider.")) + +(deftable (user "users") + (!dao-def)) + (defclass user-settings () ((user-dn :col-type string :initarg :user-dn :accessor user-dn) (enable-email-notifications @@ -220,6 +236,17 @@ its new value will be formatted using ~A into NEW-VALUE")) (deftable migration (!dao-def)) ;;; +;;; Utils +;;; + +(defun create-table-if-not-exists (name) + " Takes the name of a dao-class and creates the table identified by symbol by +executing all forms in its definition as found in the *tables* list, if it does +not already exist." + (unless (table-exists-p (dao-table-name name)) + (create-table name))) + +;;; ;;; Migrations ;;; @@ -571,8 +598,9 @@ explicitly subscribing to / unsubscribing from individual issues." ;; Creating new migrations (setq *migrations-dir* (merge-pathnames "migrations/")) - (generate-migration "add-issue-tsv" - :documentation "Add tsvector for full-text search of issues") + (generate-migration "create-users-table" + :documentation "Add a table to store information about users") + (load-migrations) ;; Running migrations (with-connection *pg-spec* |