Added user authentication

This commit is contained in:
Leon Mika 2025-02-01 09:42:32 +11:00
parent d7e7af5a10
commit cb54057305
40 changed files with 710 additions and 218 deletions

View file

@ -27,6 +27,10 @@ func (db *DB) GetPost(ctx context.Context, postID int64) (models.Post, error) {
return dbPostToPost(res), nil
}
func (db *DB) DeletePost(ctx context.Context, postID int64) error {
return db.q.DeletePost(ctx, postID)
}
func (db *DB) ListPublishablePosts(ctx context.Context, fromID, siteID int64, now time.Time) ([]models.Post, error) {
res, err := db.q.ListPublishablePosts(ctx, dbq.ListPublishablePostsParams{
ID: fromID,

View file

@ -8,11 +8,12 @@ import (
func (db *DB) InsertSite(ctx context.Context, site *models.Site) error {
id, err := db.q.NewSite(ctx, dbq.NewSiteParams{
Name: site.Name,
Title: site.Title,
Url: site.URL,
Theme: site.Theme,
Props: []byte("{}"),
Name: site.Name,
Title: site.Title,
OwnerUserID: site.OwnerUserID,
Url: site.URL,
Theme: site.Theme,
Props: []byte("{}"),
})
if err != nil {
return err
@ -31,6 +32,7 @@ func (db *DB) GetSite(ctx context.Context, id int64) (models.Site, error) {
ID: site.ID,
Name: site.Name,
Title: site.Title,
URL: site.Url,
Theme: site.Theme,
}, nil
}

45
providers/db/user.go Normal file
View file

@ -0,0 +1,45 @@
package db
import (
"context"
"lmika.dev/lmika/hugo-cms/gen/sqlc/dbq"
"lmika.dev/lmika/hugo-cms/models"
)
func (db *DB) AddUser(ctx context.Context, user *models.User) error {
id, err := db.q.AddUser(ctx, dbq.AddUserParams{
Email: user.Email,
Password: user.PasswordHash,
})
if err != nil {
return err
}
user.ID = id
return nil
}
func (db *DB) GetUserByID(ctx context.Context, id int64) (models.User, error) {
res, err := db.q.GetUserByID(ctx, id)
if err != nil {
return models.User{}, err
}
return dbUserToUser(res), nil
}
func (db *DB) GetUserByEmail(ctx context.Context, email string) (models.User, error) {
res, err := db.q.GetUserByEmail(ctx, email)
if err != nil {
return models.User{}, err
}
return dbUserToUser(res), nil
}
func dbUserToUser(u dbq.User) models.User {
return models.User{
ID: u.ID,
Email: u.Email,
PasswordHash: u.Password,
}
}