implement guestbook settings db code
This commit is contained in:
		
							parent
							
								
									260ddbe740
								
							
						
					
					
						commit
						019b31aa9f
					
				@ -2,6 +2,7 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"database/sql"
 | 
						"database/sql"
 | 
				
			||||||
 | 
						"strconv"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -13,6 +14,14 @@ type GuestbookSettings struct {
 | 
				
			|||||||
	AllowRemoteHostAccess bool
 | 
						AllowRemoteHostAccess bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						SettingGbCommentingEnabled = "commenting_enabled"
 | 
				
			||||||
 | 
						SettingGbReenableComments  = "reenable_comments"
 | 
				
			||||||
 | 
						SettingGbVisible           = "is_visible"
 | 
				
			||||||
 | 
						SettingGbFilteredWords     = "filtered_words"
 | 
				
			||||||
 | 
						SettingGbAllowRemote       = "remote_enabled"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Guestbook struct {
 | 
					type Guestbook struct {
 | 
				
			||||||
	ID        int64
 | 
						ID        int64
 | 
				
			||||||
	ShortId   uint64
 | 
						ShortId   uint64
 | 
				
			||||||
@ -26,9 +35,42 @@ type Guestbook struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type GuestbookModel struct {
 | 
					type GuestbookModel struct {
 | 
				
			||||||
	DB       *sql.DB
 | 
						DB       *sql.DB
 | 
				
			||||||
 | 
						Settings map[string]Setting
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *GuestbookModel) Insert(shortId uint64, userId int64, websiteId int64) (int64, error) {
 | 
					func (m *GuestbookModel) InitializeSettingsMap() error {
 | 
				
			||||||
 | 
						if m.Settings == nil {
 | 
				
			||||||
 | 
							m.Settings = make(map[string]Setting)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						stmt := `SELECT settings.Id, settings.Description, Constrained, d.Id, d.Description, g.Id, g.Description, MinValue, MaxValue
 | 
				
			||||||
 | 
					        FROM settings
 | 
				
			||||||
 | 
					        LEFT JOIN setting_data_types d ON settings.DataType = d.Id
 | 
				
			||||||
 | 
					        LEFT JOIN setting_groups g ON settings.SettingGroup = g.Id
 | 
				
			||||||
 | 
					        WHERE SettingGroup = (SELECT Id FROM setting_groups WHERE Description = 'guestbook' LIMIT 1)`
 | 
				
			||||||
 | 
						result, err := m.DB.Query(stmt)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for result.Next() {
 | 
				
			||||||
 | 
							var s Setting
 | 
				
			||||||
 | 
							var mn sql.NullString
 | 
				
			||||||
 | 
							var mx sql.NullString
 | 
				
			||||||
 | 
							err := result.Scan(&s.id, &s.description, &s.constrained, &s.dataType.id, &s.dataType.description, &s.settingGroup.id, &s.settingGroup.description, &mn, &mx)
 | 
				
			||||||
 | 
							if mn.Valid {
 | 
				
			||||||
 | 
								s.minValue = mn.String
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if mx.Valid {
 | 
				
			||||||
 | 
								s.maxValue = mx.String
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							m.Settings[s.description] = s
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (m *GuestbookModel) Insert(shortId uint64, userId int64, websiteId int64, settings GuestbookSettings) (int64, error) {
 | 
				
			||||||
	stmt := `INSERT INTO guestbooks (ShortId, UserId, WebsiteId, Created, IsActive)
 | 
						stmt := `INSERT INTO guestbooks (ShortId, UserId, WebsiteId, Created, IsActive)
 | 
				
			||||||
    VALUES(?, ?, ?, ?, TRUE)`
 | 
					    VALUES(?, ?, ?, ?, TRUE)`
 | 
				
			||||||
	result, err := m.DB.Exec(stmt, shortId, userId, websiteId, time.Now().UTC())
 | 
						result, err := m.DB.Exec(stmt, shortId, userId, websiteId, time.Now().UTC())
 | 
				
			||||||
@ -39,6 +81,10 @@ func (m *GuestbookModel) Insert(shortId uint64, userId int64, websiteId int64) (
 | 
				
			|||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return -1, err
 | 
							return -1, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						err = m.initializeGuestbookSettings(id, settings)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return id, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return id, nil
 | 
						return id, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,35 +126,55 @@ func (m *GuestbookModel) GetAll(userId int64) ([]Guestbook, error) {
 | 
				
			|||||||
	return guestbooks, nil
 | 
						return guestbooks, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *GuestbookModel) initializeGuestbookSettings(guestbookId int64, settings UserSettings) error {
 | 
					func (m *GuestbookModel) initializeGuestbookSettings(guestbookId int64, settings GuestbookSettings) error {
 | 
				
			||||||
	stmt := `INSERT INTO guestbook_settings (GuestbookId, SettingId, AllowedSettingValueId, UnconstrainedValue) VALUES 
 | 
						stmt := `INSERT INTO guestbook_settings (GuestbookId, SettingId, AllowedSettingValueId, UnconstrainedValue) VALUES 
 | 
				
			||||||
	(?, ?, ?, ?),
 | 
						(?, ?, ?, ?),
 | 
				
			||||||
	(?, ?, ?, ?),
 | 
						(?, ?, ?, ?),
 | 
				
			||||||
	(?, ?, ?, ?),
 | 
						(?, ?, ?, ?),
 | 
				
			||||||
	(?, ?, ?, ?),
 | 
						(?, ?, ?, ?),
 | 
				
			||||||
	(?, ?, ?, ?)`
 | 
						(?, ?, ?, ?)`
 | 
				
			||||||
	_ = len(stmt)
 | 
						_, err := m.DB.Exec(stmt,
 | 
				
			||||||
 | 
							guestbookId, m.Settings[SettingGbCommentingEnabled].id, settings.IsCommentingEnabled, nil,
 | 
				
			||||||
 | 
							guestbookId, m.Settings[SettingGbReenableComments].id, nil, settings.ReenableCommenting.String(),
 | 
				
			||||||
 | 
							guestbookId, m.Settings[SettingGbVisible].id, settings.IsVisible, nil,
 | 
				
			||||||
 | 
							guestbookId, m.Settings[SettingGbAllowRemote].id, settings.AllowRemoteHostAccess, nil)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (m *GuestbookModel) UpdateSetting(guestbookId int64, value string) {
 | 
					func (m *GuestbookModel) UpdateGuestbookSettings(guestbookId int64, settings GuestbookSettings) error {
 | 
				
			||||||
 | 
						err := m.UpdateSetting(guestbookId, m.Settings[SettingGbCommentingEnabled], strconv.FormatBool(settings.IsCommentingEnabled))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						err = m.UpdateSetting(guestbookId, m.Settings[SettingGbReenableComments], settings.ReenableCommenting.String())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (m *GuestbookModel) UpdateSetting(guestbookId int64, setting Setting, value string) error {
 | 
				
			||||||
	stmt := `UPDATE guestbook_settings SET
 | 
						stmt := `UPDATE guestbook_settings SET
 | 
				
			||||||
		AllowedSettingValueId=IFNULL((SELECT Id FROM allowed_setting_values WHERE SettingId = guestbook_settings.SettingId AND ItemValue = ?), AllowedSettingValueId), 
 | 
									AllowedSettingValueId=IFNULL(
 | 
				
			||||||
 | 
										(SELECT Id FROM allowed_setting_values WHERE SettingId = guestbook_settings.SettingId AND ItemValue = ?), AllowedSettingValueId
 | 
				
			||||||
 | 
									), 
 | 
				
			||||||
				UnconstrainedValue=(SELECT ? FROM settings WHERE settings.Id = guestbook_settings.SettingId AND settings.Constrained=0)
 | 
									UnconstrainedValue=(SELECT ? FROM settings WHERE settings.Id = guestbook_settings.SettingId AND settings.Constrained=0)
 | 
				
			||||||
			WHERE GuestbookId = ?
 | 
								WHERE GuestbookId = ?
 | 
				
			||||||
			AND SettingId = (SELECT Id from Settings WHERE Description=?);`
 | 
								AND SettingId = (SELECT Id from Settings WHERE Description=?);`
 | 
				
			||||||
	_ = len(stmt)
 | 
						result, err := m.DB.Exec(stmt, value, value, guestbookId, setting.description)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						rows, err := result.RowsAffected()
 | 
				
			||||||
func (m *GuestbookModel) SetCommentingEnabled(guestbookId int64, enabled bool) error {
 | 
						if err != nil {
 | 
				
			||||||
	return nil
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if rows != 1 {
 | 
				
			||||||
func (m *GuestbookModel) SetReenableCommentingDate(guestbookId int64, reenableTime time.Time) error {
 | 
							return ErrInvalidSettingValue
 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func (m *GuestbookModel) SetVisible(guestbookId int64, visible bool) error {
 | 
					 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -119,7 +185,3 @@ func (m *GuestbookModel) AddFilteredWord(guestbookId int64, word string) error {
 | 
				
			|||||||
func (m *GuestbookModel) RemoveFilteredWord(guestbookId int64, word string) error {
 | 
					func (m *GuestbookModel) RemoveFilteredWord(guestbookId int64, word string) error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func (m *GuestbookModel) SetRemoteHostAccess(guestbookId int64, allowed bool) error {
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user