GraphQL Framework
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user