Skip to content

Commit

Permalink
redo&rename database module => model
Browse files Browse the repository at this point in the history
  • Loading branch information
jinyaoMa committed Oct 13, 2022
1 parent 9b1f55d commit 94b7a7b
Show file tree
Hide file tree
Showing 17 changed files with 204 additions and 217 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,15 @@ $ pnpm <[install|preinstall]:[task]> # install/preinstall scripts trigger during
├── backend # sources related to backend code
│ ├── app # app module, business layer
│ │ ├── config # load application options from database, global resource
| │ ├── config.go # application config with functions for state and database manupulation
| │ ├── config.web.go # web config
| │ └── env.go # load os environment variable
│ ├── config.go # application config with functions for state and database manupulation
│ ├── config.web.go # web config
│ └── env.go # load os environment variable
│ │ ├── i18n # manage locale/translation strings for backend, global resource
│ │ ├── logger # setup loggers
│ │ └── app.go # setup global state and resources
│ ├── database # database module, persistence layer
│ │ ├── option # define application options for app config storage
│ │ └── database.go # setup database
│ ├── model # model module, persistence layer
│ │ ├── model.go # setup database, table prefix `my_`
│ │ └── my_option.go # define application options for app config storage
│ ├── pkg # pkg module, cross cutting
│ │ └── utils # helper functions
│ ├── service # service module, business layer
Expand Down
14 changes: 7 additions & 7 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,15 @@ $ pnpm <[install|preinstall]:[task]> # 安装项目依赖时会触发这些 inst
├── backend # 后端相关源文件
│ ├── app # app 模块,业务层
│ │ ├── config # 从数据库加载应用设置,全局资源
| │ ├── config.go # 应用设置,与状态和数据操作相关的函数
| │ ├── config.web.go # Web 设置
| │ └── env.go # 加载系统环境变量
│ ├── config.go # 应用设置,与状态和数据操作相关的函数
│ ├── config.web.go # Web 设置
│ └── env.go # 加载系统环境变量
│ │ ├── i18n # 后端 i18n 语言源文件,全局资源
│ │ ├── logger # 定义后端 loggers
│ │ ├── app.go # 存放全局状态及资源
│ ├── database # database 模块,持久层
│ │ ├── option # 定义 options 表,用于储存应用设置
│ │ └── database.go # 初始化 database
│ ├── model # model 模块,持久层
│ │ ├── model.go # 初始化数据库,表前缀 `my_`
│ │ └── my_option.go # 定义 options 表,用于储存应用设置
│ ├── pkg # pkg 模块,横切层
│ │ └── utils # 辅助函数/方法
│ ├── service # service 模块,业务层
Expand Down Expand Up @@ -131,7 +131,7 @@ $ pnpm <[install|preinstall]:[task]> # 安装项目依赖时会触发这些 inst
│ └── # ...
├── screenshots # README 应用预览截图
├── main.go # wails main 入口, 表示层
├── wails_life_cycle.go # wails 生命周期
├── main.wails.go # wails 生命周期
├── wails.json # wails CLI 配置
└── # ...
```
Expand Down
4 changes: 2 additions & 2 deletions backend/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"my-app/backend/app/config"
"my-app/backend/app/i18n"
"my-app/backend/app/logger"
"my-app/backend/database"
"my-app/backend/model"
)

var (
Expand Down Expand Up @@ -36,7 +36,7 @@ func init() {
i18n: i18n.NewI18n(),
}

database.SetLogger(instance.log.Database())
model.SetLogger(instance.log.Model())
}

func App() *app {
Expand Down
16 changes: 8 additions & 8 deletions backend/app/config/config.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package config

import (
"my-app/backend/database/option"
"my-app/backend/model"
"my-app/backend/pkg/utils"
)

Expand Down Expand Up @@ -51,7 +51,7 @@ func DefaultConfig() *Config {
func LoadConfig() *Config {
cfg := DefaultConfig()

var opts option.Options
var opts model.Options
if opts.Find() {
cfg.load(opts)
} else {
Expand All @@ -63,7 +63,7 @@ func LoadConfig() *Config {

// save all config into database
func (c *Config) Save() (ok bool) {
var options option.Options
var options model.Options
for _, opt := range [][]string{
{CfgDisplayLanguage, c.DisplayLanguage},
{CfgColorTheme, c.ColorTheme},
Expand All @@ -73,7 +73,7 @@ func (c *Config) Save() (ok bool) {
{CfgWebPortHttps, c.PortHttps},
{CfgWebDirCerts, c.DirCerts},
} {
options = append(options, option.Option{
options = append(options, model.Option{
Name: opt[0],
Value: opt[1],
})
Expand All @@ -83,14 +83,14 @@ func (c *Config) Save() (ok bool) {

// update option's value into database and set config's option value
func (c *Config) Update(name string, value string) (ok bool) {
opt := &option.Option{
opt := &model.Option{
Name: name,
}
return opt.Update(value) && c.set(name, value)
}

// load options into config and save new options into database
func (c *Config) load(options option.Options) (ok bool) {
func (c *Config) load(options model.Options) (ok bool) {
for _, option := range options {
if !c.set(option.Name, option.Value) {
return false
Expand All @@ -107,7 +107,7 @@ func (c *Config) load(options option.Options) (ok bool) {
CfgWebDirCerts: c.DirCerts,
}

var newOptions option.Options
var newOptions model.Options
for name, value := range optionPairs {
optionNotExist := true
for _, option := range options {
Expand All @@ -120,7 +120,7 @@ func (c *Config) load(options option.Options) (ok bool) {
}
if optionNotExist {
// initialize new options
newOptions = append(newOptions, option.Option{
newOptions = append(newOptions, model.Option{
Name: name,
Value: value,
})
Expand Down
44 changes: 22 additions & 22 deletions backend/app/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,28 +9,28 @@ import (
)

const (
LogPrefixWails = "WLS"
LogPrefixTray = "TRY"
LogPrefixWeb = "WEB"
LogPrefixService = "SEV"
LogPrefixDatabase = "DBS"
LogPrefixWails = "WLS"
LogPrefixTray = "TRY"
LogPrefixWeb = "WEB"
LogPrefixService = "SEV"
LogPrefixModel = "MDL"
)

type Logger struct {
wails wailsLogger.Logger
tray *log.Logger
web *log.Logger
service *log.Logger
database gormLogger.Interface
wails wailsLogger.Logger
tray *log.Logger
web *log.Logger
service *log.Logger
model gormLogger.Interface
}

func NewConsoleLogger() *Logger {
return &Logger{
wails: wailsConsoleLogger(LogPrefixWails),
tray: consoleLogger(LogPrefixTray),
web: consoleLogger(LogPrefixWeb),
service: consoleLogger(LogPrefixService),
database: databaseConsoleLogger(LogPrefixDatabase),
wails: wailsConsoleLogger(LogPrefixWails),
tray: consoleLogger(LogPrefixTray),
web: consoleLogger(LogPrefixWeb),
service: consoleLogger(LogPrefixService),
model: modelConsoleLogger(LogPrefixModel),
}
}

Expand All @@ -44,11 +44,11 @@ func NewFileLogger(logPath string) *Logger {
panic("failed to open log file")
}
return &Logger{
wails: wailsFileLogger(LogPrefixWails, logFile),
tray: fileLogger(LogPrefixTray, logFile),
web: fileLogger(LogPrefixWeb, logFile),
service: fileLogger(LogPrefixService, logFile),
database: databaseFileLogger(LogPrefixDatabase, logFile),
wails: wailsFileLogger(LogPrefixWails, logFile),
tray: fileLogger(LogPrefixTray, logFile),
web: fileLogger(LogPrefixWeb, logFile),
service: fileLogger(LogPrefixService, logFile),
model: modelFileLogger(LogPrefixModel, logFile),
}
}

Expand All @@ -68,8 +68,8 @@ func (l *Logger) Service() *log.Logger {
return l.service
}

func (l *Logger) Database() gormLogger.Interface {
return l.database
func (l *Logger) Model() gormLogger.Interface {
return l.model
}

func consoleLogger(prefix string) *log.Logger {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"gorm.io/gorm/logger"
)

func databaseConsoleLogger(prefix string) logger.Interface {
func modelConsoleLogger(prefix string) logger.Interface {
return logger.New(
consoleLogger(prefix),
logger.Config{
Expand All @@ -19,7 +19,7 @@ func databaseConsoleLogger(prefix string) logger.Interface {
)
}

func databaseFileLogger(prefix string, file *os.File) logger.Interface {
func modelFileLogger(prefix string, file *os.File) logger.Interface {
return logger.New(
fileLogger(prefix, file),
logger.Config{
Expand Down
17 changes: 0 additions & 17 deletions backend/database/option/options.go

This file was deleted.

16 changes: 12 additions & 4 deletions backend/database/database.go → backend/model/model.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package database
package model

import (
"my-app/backend/pkg/utils"
Expand Down Expand Up @@ -28,10 +28,18 @@ func init() {
if err != nil {
panic("failed to connect database")
}
}

func DB() *gorm.DB {
return db
// enable foreign_keys for SQLite
if res := db.Exec("PRAGMA foreign_keys = ON"); res.Error != nil {
panic("failed to enable foreign_keys")
}

if db.AutoMigrate(
&Option{},
) != nil {
panic("failed to auto migrate")
}

}

func SetLogger(logger logger.Interface) {
Expand Down
24 changes: 15 additions & 9 deletions backend/database/option/option.go → backend/model/my_option.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package option
package model

import (
"my-app/backend/database"

"gorm.io/gorm"
)

Expand All @@ -12,18 +10,26 @@ type Option struct {
Value string `` // Option value associated with name
}

func init() {
database.DB().AutoMigrate(&Option{})
}

func (o *Option) Find() (ok bool) {
result := database.DB().Where(o).Find(o)
result := db.Where(o).Find(o)
return result.RowsAffected > 0
}

func (o *Option) Update(newValue string) (ok bool) {
result := database.DB().Model(o).Where(o).Updates(Option{
result := db.Model(o).Where(o).Updates(Option{
Value: newValue,
})
return result.RowsAffected == 1
}

type Options []Option

func (os *Options) Find() (ok bool) {
result := db.Find(os)
return result.RowsAffected > 0
}

func (os *Options) Save() (ok bool) {
result := db.Save(os)
return result.Error == nil
}
Loading

0 comments on commit 94b7a7b

Please sign in to comment.