GraphQL Framework

This commit is contained in:
2021-02-02 15:34:10 -05:00
parent ecf981495e
commit 7e6454c593
28 changed files with 10764 additions and 616 deletions

View File

@@ -11,7 +11,7 @@ import (
log "github.com/sirupsen/logrus"
"reichard.io/imagini/internal/config"
"reichard.io/imagini/internal/models"
"reichard.io/imagini/graph/model"
)
type DBManager struct {
@@ -35,16 +35,15 @@ func NewMgr(c *config.Config) *DBManager {
}
// Initialize database
dbm.db.AutoMigrate(&models.ServerSetting{})
dbm.db.AutoMigrate(&models.Device{})
dbm.db.AutoMigrate(&models.User{})
dbm.db.AutoMigrate(&models.MediaItem{})
dbm.db.AutoMigrate(&models.Tag{})
dbm.db.AutoMigrate(&models.Album{})
dbm.db.AutoMigrate(&model.Device{})
dbm.db.AutoMigrate(&model.User{})
dbm.db.AutoMigrate(&model.MediaItem{})
dbm.db.AutoMigrate(&model.Tag{})
dbm.db.AutoMigrate(&model.Album{})
// Determine whether to bootstrap
var count int64
dbm.db.Model(&models.User{}).Count(&count)
dbm.db.Model(&model.User{}).Count(&count)
if count == 0 {
dbm.bootstrapDatabase()
}
@@ -54,17 +53,23 @@ func NewMgr(c *config.Config) *DBManager {
func (dbm *DBManager) bootstrapDatabase() {
log.Info("[query] Bootstrapping database.")
err := dbm.CreateUser(&models.User{
password := "admin"
user := &model.User{
Username: "admin",
Password: "admin",
AuthType: "Local",
})
Password: &password,
}
err := dbm.CreateUser(user)
if err != nil {
log.Fatal("[query] Unable to bootstrap database.")
}
}
// func (dmb *DBManager) {}
func (dbm *DBManager) QueryBuilder(dest interface{}, params []byte) (int64, error) {
// TODO:
// - Where Filters
@@ -72,7 +77,7 @@ func (dbm *DBManager) QueryBuilder(dest interface{}, params []byte) (int64, erro
// - Paging Filters
objType := fmt.Sprintf("%T", dest)
if objType == "*[]models.MediaItem" {
if objType == "*[]model.MediaItem" {
// TODO: Validate MediaItem Type
} else {
// Return Error

View File

@@ -4,27 +4,28 @@ import (
"github.com/google/uuid"
log "github.com/sirupsen/logrus"
"reichard.io/imagini/internal/models"
"reichard.io/imagini/graph/model"
)
func (dbm *DBManager) CreateDevice (device *models.Device) error {
func (dbm *DBManager) CreateDevice (device *model.Device) error {
log.Info("[db] Creating device: ", device.Name)
device.RefreshKey = uuid.New().String()
refreshKey := uuid.New().String()
device.RefreshKey = &refreshKey
err := dbm.db.Create(&device).Error
return err
}
func (dbm *DBManager) Device (device *models.Device) (models.Device, error) {
var foundDevice models.Device
func (dbm *DBManager) Device (device *model.Device) (model.Device, error) {
var foundDevice model.Device
var count int64
err := dbm.db.Where(&device).First(&foundDevice).Count(&count).Error
return foundDevice, err
}
func (dbm *DBManager) DeleteDevice (user *models.Device) error {
func (dbm *DBManager) DeleteDevice (user *model.Device) error {
return nil
}
func (dbm *DBManager) UpdateRefreshToken (device *models.Device, refreshToken string) error {
func (dbm *DBManager) UpdateRefreshToken (device *model.Device, refreshToken string) error {
return nil
}

View File

@@ -3,17 +3,17 @@ package db
import (
log "github.com/sirupsen/logrus"
"reichard.io/imagini/internal/models"
"reichard.io/imagini/graph/model"
)
func (dbm *DBManager) CreateMediaItem (mediaItem *models.MediaItem) error {
func (dbm *DBManager) CreateMediaItem (mediaItem *model.MediaItem) error {
log.Info("[db] Creating media item: ", mediaItem.FileName)
err := dbm.db.Create(&mediaItem).Error
return err
}
func (dbm *DBManager) MediaItems(mediaItemFilter *models.MediaItem) ([]models.MediaItem, int64, error) {
var mediaItems []models.MediaItem
func (dbm *DBManager) MediaItems(mediaItemFilter *model.MediaItem) ([]model.MediaItem, int64, error) {
var mediaItems []model.MediaItem
var count int64
err := dbm.db.Where(&mediaItemFilter).Find(&mediaItems).Count(&count).Error;

View File

@@ -4,32 +4,33 @@ import (
"golang.org/x/crypto/bcrypt"
log "github.com/sirupsen/logrus"
"reichard.io/imagini/internal/models"
"reichard.io/imagini/graph/model"
)
func (dbm *DBManager) CreateUser(user *models.User) error {
func (dbm *DBManager) CreateUser(user *model.User) error {
log.Info("[db] Creating user: ", user.Username)
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(*user.Password), bcrypt.DefaultCost)
if err != nil {
log.Error(err)
return err
}
user.Password = string(hashedPassword)
stringHashedPassword := string(hashedPassword)
user.Password = &stringHashedPassword
err = dbm.db.Create(&user).Error
return err
}
func (dbm *DBManager) User (user *models.User) (models.User, error) {
var foundUser models.User
func (dbm *DBManager) User (user *model.User) (model.User, error) {
var foundUser model.User
var count int64
err := dbm.db.Where(&user).First(&foundUser).Count(&count).Error
return foundUser, err
}
func (dbm *DBManager) DeleteUser (user models.User) error {
func (dbm *DBManager) DeleteUser (user model.User) error {
return nil
}
func (dbm *DBManager) UpdatePassword (user models.User, pw string) {
func (dbm *DBManager) UpdatePassword (user model.User, pw string) {
}