Commit eb2c0788 by Torkel Ödegaard

Progres on move to sql from rethinkdb

parent 9b68911d
Subproject commit 2423f470ef62145c26e74511121eac01e554c363
Subproject commit 4b5eadf7b59898e6622a75e0a57081103dd78b2a
......@@ -17,7 +17,6 @@ import (
"github.com/torkelo/grafana-pro/pkg/routes"
"github.com/torkelo/grafana-pro/pkg/setting"
"github.com/torkelo/grafana-pro/pkg/social"
"github.com/torkelo/grafana-pro/pkg/stores/rethink"
"github.com/torkelo/grafana-pro/pkg/stores/sqlstore"
)
......@@ -66,7 +65,7 @@ func mapStatic(m *macaron.Macaron, dir string, prefix string) {
func runWeb(*cli.Context) {
setting.NewConfigContext()
setting.InitServices()
rethink.Init()
sqlstore.Init()
social.NewOAuthService()
// init database
......
......@@ -9,7 +9,7 @@ import (
"github.com/torkelo/grafana-pro/pkg/models"
)
func authGetRequestAccountId(c *Context, sess session.Store) (int, error) {
func authGetRequestAccountId(c *Context, sess session.Store) (int64, error) {
accountId := sess.Get("accountId")
urlQuery := c.Req.URL.Query()
......@@ -23,7 +23,7 @@ func authGetRequestAccountId(c *Context, sess session.Store) (int, error) {
return -1, errors.New("Auth: session account id not found")
}
return accountId.(int), nil
return accountId.(int64), nil
}
func authDenied(c *Context) {
......
......@@ -21,7 +21,7 @@ type Context struct {
IsSigned bool
}
func (c *Context) GetAccountId() int {
func (c *Context) GetAccountId() int64 {
return c.Account.Id
}
......
......@@ -9,8 +9,8 @@ var (
CreateAccount func(acccount *Account) error
UpdateAccount func(acccount *Account) error
GetAccountByLogin func(emailOrName string) (*Account, error)
GetAccount func(accountId int) (*Account, error)
GetOtherAccountsFor func(accountId int) ([]*OtherAccount, error)
GetAccount func(accountId int64) (*Account, error)
GetOtherAccountsFor func(accountId int64) ([]*OtherAccount, error)
)
// Typed errors
......@@ -19,7 +19,7 @@ var (
)
type CollaboratorLink struct {
AccountId int
AccountId int64
Role string
Email string
ModifiedOn time.Time
......@@ -33,20 +33,20 @@ type OtherAccount struct {
}
type Account struct {
Id int `gorethink:"id"`
Version int
Login string
Email string
AccountName string
Id int64
Login string `xorm:"UNIQUE NOT NULL"`
Email string `xorm:"UNIQUE NOT NULL"`
Name string `xorm:"UNIQUE NOT NULL"`
FullName string
Password string
Name string
IsAdmin bool
Salt string `xorm:"VARCHAR(10)"`
Company string
NextDashboardId int
UsingAccountId int
Collaborators []CollaboratorLink
CreatedOn time.Time
ModifiedOn time.Time
LastLoginOn time.Time
UsingAccountId int64
Collaborators []CollaboratorLink `xorm:"-"`
Created time.Time `xorm:"CREATED"`
Updated time.Time `xorm:"UPDATED"`
}
func (account *Account) AddCollaborator(newCollaborator *Account) error {
......@@ -67,7 +67,7 @@ func (account *Account) AddCollaborator(newCollaborator *Account) error {
return nil
}
func (account *Account) RemoveCollaborator(accountId int) {
func (account *Account) RemoveCollaborator(accountId int64) {
list := account.Collaborators
for i, collaborator := range list {
if collaborator.AccountId == accountId {
......@@ -77,7 +77,7 @@ func (account *Account) RemoveCollaborator(accountId int) {
}
}
func (account *Account) HasCollaborator(accountId int) bool {
func (account *Account) HasCollaborator(accountId int64) bool {
for _, collaborator := range account.Collaborators {
if collaborator.AccountId == accountId {
return true
......
......@@ -2,6 +2,7 @@ package models
import (
"encoding/json"
"errors"
"io"
"regexp"
"strings"
......@@ -9,19 +10,24 @@ import (
)
var (
GetDashboard func(slug string, accountId int) (*Dashboard, error)
GetDashboard func(slug string, accountId int64) (*Dashboard, error)
SaveDashboard func(dash *Dashboard) error
DeleteDashboard func(slug string, accountId int) error
SearchQuery func(query string, acccountId int) ([]*SearchResult, error)
DeleteDashboard func(slug string, accountId int64) error
SearchQuery func(query string, acccountId int64) ([]*SearchResult, error)
)
// Typed errors
var (
ErrDashboardNotFound = errors.New("Account not found")
)
type Dashboard struct {
Id string `gorethink:"id,omitempty"`
Slug string
AccountId int
LastModifiedByUserId string
LastModifiedByDate time.Time
CreatedDate time.Time
Id int64
Slug string `xorm:"index(IX_AccountIdSlug)"`
AccountId int64 `xorm:"index(IX_AccountIdSlug)"`
Created time.Time `xorm:"CREATED"`
Updated time.Time `xorm:"UPDATED"`
Title string
Tags []string
......@@ -36,10 +42,7 @@ type SearchResult struct {
func NewDashboard(title string) *Dashboard {
dash := &Dashboard{}
dash.Id = ""
dash.LastModifiedByDate = time.Now()
dash.CreatedDate = time.Now()
dash.LastModifiedByUserId = "123"
dash.Id = 0
dash.Data = make(map[string]interface{})
dash.Data["title"] = title
dash.Title = title
......
......@@ -69,7 +69,7 @@ func PostDashboard(c *middleware.Context) {
dashboard.UpdateSlug()
if dashboard.Data["id"] != nil {
dashboard.Id = dashboard.Data["id"].(string)
dashboard.Id = int64(dashboard.Data["id"].(float64))
}
err := models.SaveDashboard(dashboard)
......
......@@ -12,7 +12,7 @@ import (
func RenderToPng(c *middleware.Context) {
accountId := c.GetAccountId()
queryReader := utils.NewUrlQueryReader(c.Req.URL)
queryParams := "?render&accountId=" + strconv.Itoa(accountId) + "&" + c.Req.URL.RawQuery
queryParams := "?render&accountId=" + strconv.FormatInt(accountId, 10) + "&" + c.Req.URL.RawQuery
renderOpts := &renderer.RenderOpts{
Url: c.Params("*") + queryParams,
......
......@@ -6,7 +6,6 @@ import (
"github.com/torkelo/grafana-pro/pkg/routes/api"
"github.com/torkelo/grafana-pro/pkg/routes/apimodel"
"github.com/torkelo/grafana-pro/pkg/routes/login"
"github.com/torkelo/grafana-pro/pkg/stores/sqlstore"
)
func Register(m *macaron.Macaron) {
......@@ -33,8 +32,6 @@ func Register(m *macaron.Macaron) {
}
func Index(ctx *middleware.Context) {
sqlstore.GetAccounts()
ctx.Data["User"] = apimodel.NewCurrentUserDto(ctx.UserAccount)
ctx.HTML(200, "index")
}
......
......@@ -63,6 +63,8 @@ func OAuthLogin(ctx *middleware.Context) {
ctx.Handle(500, "Failed to create account", err)
return
}
} else if err != nil {
ctx.Handle(500, "Unexpected error", err)
}
// login
......
......@@ -6,9 +6,11 @@ import (
"path"
"strings"
"github.com/torkelo/grafana-pro/pkg/models"
"github.com/torkelo/grafana-pro/pkg/setting"
"github.com/go-xorm/xorm"
_ "github.com/mattn/go-sqlite3"
"github.com/torkelo/grafana-pro/pkg/setting"
)
var (
......@@ -24,14 +26,14 @@ var (
UseSQLite3 bool
)
type AccountDto struct {
Id int64
Email string `xorm:"UNIQUE NOT NULL"`
Passwd string `xorm:"NOT NULL"`
}
func Init() {
tables = append(tables, new(models.Account), new(models.Dashboard))
func init() {
tables = append(tables, new(AccountDto))
models.CreateAccount = CreateAccount
models.GetAccount = GetAccount
models.GetAccountByLogin = GetAccountByLogin
models.GetDashboard = GetDashboard
models.SaveDashboard = SaveDashboard
}
func LoadModelsConfig() {
......
package sqlstore
import "github.com/torkelo/grafana-pro/pkg/log"
import (
"github.com/torkelo/grafana-pro/pkg/models"
)
func SaveAccount() error {
func CreateAccount(account *models.Account) error {
var err error
sess := x.NewSession()
......@@ -12,12 +14,7 @@ func SaveAccount() error {
return err
}
u := &AccountDto{
Email: "asdasdas",
Passwd: "MyPassWd",
}
if _, err = sess.Insert(u); err != nil {
if _, err = sess.Insert(account); err != nil {
sess.Rollback()
return err
} else if err = sess.Commit(); err != nil {
......@@ -27,14 +24,32 @@ func SaveAccount() error {
return nil
}
func GetAccounts() {
var resp = make([]*AccountDto, 1)
err := x.Find(&resp)
func GetAccount(id int64) (*models.Account, error) {
var err error
account := &models.Account{Id: id}
has, err := x.Get(account)
if err != nil {
log.Error(4, "Error", err)
return nil, err
} else if has == false {
return nil, models.ErrAccountNotFound
}
for _, i := range resp {
log.Info("Item %v", i)
return account, nil
}
func GetAccountByLogin(emailOrLogin string) (*models.Account, error) {
var err error
account := &models.Account{Login: emailOrLogin}
has, err := x.Get(account)
if err != nil {
return nil, err
} else if has == false {
return nil, models.ErrAccountNotFound
}
return account, nil
}
package sqlstore
import (
"github.com/torkelo/grafana-pro/pkg/models"
)
func SaveDashboard(dash *models.Dashboard) error {
var err error
sess := x.NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
}
if _, err = sess.Insert(dash); err != nil {
sess.Rollback()
return err
} else if err = sess.Commit(); err != nil {
return err
}
return nil
}
func GetDashboard(slug string, accountId int64) (*models.Dashboard, error) {
dashboard := models.Dashboard{Slug: slug, AccountId: accountId}
has, err := x.Get(&dashboard)
if err != nil {
return nil, err
} else if has == false {
return nil, models.ErrDashboardNotFound
}
return &dashboard, nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment