This commit is contained in:
Liang Ding 2023-03-02 15:03:33 +08:00
parent 90044e1f26
commit 5ba23bf204
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
5 changed files with 52 additions and 8 deletions

View file

@ -68,6 +68,16 @@ func (av *AttributeView) GetColumnNames() (ret []string) {
return
}
func (av *AttributeView) InsertColumn(index int, column Column) {
if 0 > index || len(av.Columns) == index {
av.Columns = append(av.Columns, column)
return
}
av.Columns = append(av.Columns[:index+1], av.Columns[index:]...)
av.Columns[index] = column
}
type AttributeViewFilter struct {
Column string `json:"column"`
Operator FilterOperator `json:"operator"`

View file

@ -16,6 +16,8 @@
package av
import "github.com/88250/lute/ast"
// Column 描述了属性视图的列。
type Column interface {
@ -59,3 +61,11 @@ func (c *BaseColumn) Name() string {
func (c *BaseColumn) Type() ColumnType {
return c.BaseType
}
func NewBaseColumn(name string, columnType ColumnType) *BaseColumn {
return &BaseColumn{
BaseID: ast.NewNodeID(),
BaseName: name,
BaseType: columnType,
}
}

View file

@ -16,18 +16,12 @@
package av
import "github.com/88250/lute/ast"
type ColumnBlock struct {
*BaseColumn
}
func NewColumnBlock() *ColumnBlock {
return &ColumnBlock{
BaseColumn: &BaseColumn{
BaseID: ast.NewNodeID(),
BaseName: "Block",
BaseType: ColumnTypeBlock,
},
BaseColumn: NewBaseColumn("Block", ColumnTypeBlock),
}
}

View file

@ -19,3 +19,9 @@ package av
type ColumnText struct {
*BaseColumn
}
func NewColumnText(name string) *ColumnText {
return &ColumnText{
BaseColumn: NewBaseColumn(name, ColumnTypeText),
}
}

View file

@ -17,13 +17,37 @@
package model
import (
"errors"
"fmt"
"github.com/88250/lute/parse"
"github.com/siyuan-note/logging"
"github.com/siyuan-note/siyuan/kernel/av"
"github.com/siyuan-note/siyuan/kernel/sql"
"github.com/siyuan-note/siyuan/kernel/treenode"
)
func AddBlockToAttributeView(blockID, avID string) (err error) {
func AddAttributeViewColumn(name string, typ string, columnIndex int, avID string) (err error) {
attrView, err := av.ParseAttributeView(avID)
if nil != err {
return
}
switch av.ColumnType(typ) {
case av.ColumnTypeText:
attrView.InsertColumn(columnIndex, av.NewColumnText(name))
default:
msg := fmt.Sprintf("invalid column type [%s]", typ)
logging.LogErrorf(msg)
err = errors.New(msg)
return
}
err = av.SaveAttributeView(attrView)
return
}
func AddAttributeViewBlock(blockID, avID string) (err error) {
tree, err := loadTreeByBlockID(blockID)
if nil != err {
return