Refactored/fixed article conversion

pull/34/head v0.0.8
マリウス 2 years ago
parent aef6098a31
commit 9027b3acb6
No known key found for this signature in database
GPG Key ID: 272ED814BF63261F

@ -196,10 +196,13 @@ func (db *Database) Disconnect() {
}
func (db *Database) SubmitArticle(article *models.Article) (error) {
entity := structToMap(&article)
entity, err := structToMap(*article)
if err != nil {
return err
}
entity["type"] = "article"
_, err := db.Store.Put(db.ctx, entity)
_, err = db.Store.Put(db.ctx, entity)
return err
}

@ -2,7 +2,6 @@ package database
import (
"context"
"encoding/json"
"fmt"
"os"
"path/filepath"
@ -14,6 +13,7 @@ import (
"github.com/ipfs/go-ipfs/plugin/loader"
"github.com/ipfs/go-ipfs/repo/fsrepo"
icore "github.com/ipfs/interface-go-ipfs-core"
"github.com/mitchellh/mapstructure"
)
func setupPlugins(path string) error {
@ -75,10 +75,14 @@ func getUnixfsNode(path string) (files.Node, error) {
return f, nil
}
func structToMap(v interface{}) (map[string]interface{}) {
var vMap map[string]interface{}
data, _ := json.Marshal(v)
json.Unmarshal(data, &vMap)
return vMap
func structToMap(v interface{}) (map[string]interface{}, error) {
vMap := &map[string]interface{}{}
err := mapstructure.Decode(v, &vMap)
if err != nil {
return nil, err
}
return *vMap, nil
}

@ -8,17 +8,17 @@ import (
)
type Article struct {
ID string `mmapstructure:"id" json:"-" validate:"uuid_rfc4122"`
InReplyToID string `mmapstructure:"in-reply-to-id" json:"-" validate:"omitempty,uuid_rfc4122"`
From string `mmapstructure:"from" json:"-" validate:"required,printascii"`
Newsgroup string `mmapstructure:"newsgroup" json:"-" validate:"required,min=2,max=80,printascii,lowercase"`
Subject string `mmapstructure:"subject" json:"-" validate:"required,min=2,max=128,printascii"`
Date int64 `mmapstructure:"date" json:"-" validate:"required,number"`
Organization string `mmapstructure:"organization" json:"-" validate:"printascii"`
Body string `mmapstructure:"body" json:"-" validate:"required,min=3,max=524288"`
Replies []*Article `mmapstructure:"-" json:"-" validate:"-"`
Read bool `mmapstructure:"-" json:"read" validate:"-"`
ID string `mapstructure:"id" json:"-" validate:"uuid_rfc4122"`
InReplyToID string `mapstructure:"in-reply-to-id" json:"-" validate:"omitempty,uuid_rfc4122"`
From string `mapstructure:"from" json:"-" validate:"required,printascii"`
Newsgroup string `mapstructure:"newsgroup" json:"-" validate:"required,min=2,max=80,printascii,lowercase"`
Subject string `mapstructure:"subject" json:"-" validate:"required,min=2,max=128,printascii"`
Date int64 `mapstructure:"date" json:"-" validate:"required,number"`
Organization string `mapstructure:"organization" json:"-" validate:"printascii"`
Body string `mapstructure:"body" json:"-" validate:"required,min=3,max=524288"`
Replies []*Article `mapstructure:"-" json:"-" validate:"-"`
Read bool `mapstructure:"-" json:"read" validate:"-"`
}
func NewArticle() (*Article) {

@ -471,7 +471,7 @@ func(mainscreen *Mainscreen) replyToArticle(article *models.Article) {
Rune: 'y',
Callback: func() {
if mainscreen.T.CallbackSubmitArticle != nil {
mainscreen.T.CallbackSubmitArticle(&updatedNewArticle)
err = mainscreen.T.CallbackSubmitArticle(&updatedNewArticle)
}
return
},
@ -482,6 +482,14 @@ func(mainscreen *Mainscreen) replyToArticle(article *models.Article) {
return
},
},
})
},
)
if err != nil {
mainscreen.T.ShowErrorModal(err.Error())
return
}
return
}

Loading…
Cancel
Save