代码拉取完成,页面将自动刷新
/*
Nging is a toolbox for webmasters
Copyright (C) 2018-present Wenhui Shen <swh@admpub.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package model
import (
"net/url"
"strings"
"github.com/admpub/nging/application/dbschema"
"github.com/admpub/nging/application/model/base"
"github.com/webx-top/db"
"github.com/webx-top/echo"
)
type DbSyncWithAccount struct {
*dbschema.DbSync
SrcAccount *dbschema.DbAccount `db:"-,relation=id:source_account_id"`
DstAccount *dbschema.DbAccount `db:"-,relation=id:destination_account_id"`
}
func NewDbSync(ctx echo.Context) *DbSync {
return &DbSync{
DbSync: &dbschema.DbSync{},
Base: base.New(ctx),
}
}
type DbSync struct {
*dbschema.DbSync
*base.Base
}
func (a *DbSync) ToDSNFromAccount(acc *dbschema.DbAccount) string {
return a.ToDSN(acc.User, acc.Password, acc.Host, acc.Name)
}
func (a *DbSync) ToDSN(user, pwd, host, db string) string {
//test:test@(127.0.0.1:3306)/test_0
if len(user) == 0 {
user = `root`
}
if len(pwd) == 0 {
pwd = `root`
}
if len(host) == 0 {
host = `127.0.0.1:3306`
}
return url.QueryEscape(user) + `:` + url.QueryEscape(pwd) + `@(` + host + `)/` + db
}
func (a *DbSync) ParseDSN(dsn string) (user string, pwd string, host string, dbName string) {
idx := strings.Index(dsn, `:`)
user, _ = url.QueryUnescape(dsn[0:idx])
dsn = dsn[idx+1:]
idx = strings.Index(dsn, `@`)
pwd, _ = url.QueryUnescape(dsn[0:idx])
dsn = dsn[idx+1:]
idx = strings.Index(dsn, `/`)
host = dsn[0:idx]
host = strings.TrimPrefix(host, `(`)
host = strings.TrimSuffix(host, `)`)
dbName = dsn[idx+1:]
return
}
func (a *DbSync) HidePassword(dsn string) string {
idx := strings.Index(dsn, `:`)
user, _ := url.QueryUnescape(dsn[0:idx])
dsn = dsn[idx+1:]
idx = strings.Index(dsn, `@`)
return user + `:***@` + dsn[idx+1:]
}
func (a *DbSync) Add() (interface{}, error) {
return a.DbSync.Add()
}
func (a *DbSync) Edit(mw func(db.Result) db.Result, args ...interface{}) error {
return a.DbSync.Edit(mw, args...)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。