diff options
author | Andinus <andinus@nand.sh> | 2020-03-27 18:32:10 +0530 |
---|---|---|
committer | Andinus <andinus@nand.sh> | 2020-03-27 18:32:10 +0530 |
commit | 97f36a08c7a5e3bd7921a26af89eee8ad9b3e3d7 (patch) | |
tree | 3c1da88b84708ed2935f680ac60f235feae5e803 /user | |
parent | 73952003142c7106482a198ce6024cba00c35e44 (diff) | |
download | perseus-97f36a08c7a5e3bd7921a26af89eee8ad9b3e3d7.tar.gz |
Add AddUser func
Diffstat (limited to 'user')
-rw-r--r-- | user/adduser.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/user/adduser.go b/user/adduser.go new file mode 100644 index 0000000..873454b --- /dev/null +++ b/user/adduser.go @@ -0,0 +1,42 @@ +package user + +import ( + "log" + "time" + + "tildegit.org/andinus/perseus/storage/sqlite3" +) + +// AddUser adds the user to record. +func (u *User) AddUser(db *sqlite3.DB) error { + // Acquire write lock on the database. + db.Mu.Lock() + defer db.Mu.Unlock() + + // Start the transaction + tx, err := db.Conn.Begin() + if err != nil { + log.Printf("user/adduser.go: %s\n", + "failed to begin transaction") + return err + } + + usrStmt, err := db.Conn.Prepare(` +INSERT INTO users(id, username, password, regTime) values(?, ?, ?, ?)`) + if err != nil { + log.Printf("user/adduser.go: %s\n", + "failed to prepare statement") + return err + } + defer usrStmt.Close() + + _, err = usrStmt.Exec(u.id, u.username, u.password, time.Now().UTC()) + if err != nil { + log.Printf("user/adduser.go: %s\n", + "failed to execute statement") + return err + } + + tx.Commit() + return err +} |