sdtabledata

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2024 License: MIT Imports: 14 Imported by: 0

README

Table data

数据库一张表的数据存储在一个目录中,每行都是一个JSON文件,可以手工维护。这个包将可以便利的读取这种特定结构的目录。

这个目录结构说明如下

/path/to/table                      # 目录
    __meta__.json                   # 这个表的元信息 (这个文件是可选的)
    {row}.json                      # 一行一个json文件
    {row}/index.json                # 也可以将一行装入到一个目录中
    {row}.{column}.{ext}            # 行中的某一个列可以储存在文件中,最后上传到ObjectStore中(参见sdobjectstore)
    {row}/{column}.{ext}            # 这些文件也可以装入一个目录中
    {row}.{column}.{sub}.{ext}      # 许多文件可以放在一列中,打包成json的链接形式
    {row}/{column}.{sub}.{ext}      # 这些文件也可以放在目录中

注意:这里{row}不是行的ID,只是在文件系统中保存行数据的目录名,真正的id写在row的数据中。

例如下面是具体的例子

local_data1/Product
└── 开关
    ├── image_url.white.png         # image_url字段中的white文件
    ├── image_url.red.png           # image_url字段中的red文件
    ├── index.json                  # 保存有这行数据的json
    └── logo_url.png                # logo_url字段中对应的文件

Documentation

Overview

Package sdtabledata 将一个数据库表的数据保存在一个目录中,组织规范参见README.md

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ListRows

func ListRows(src Source) ([]string, error)

func LoadAll

func LoadAll(src Source, opts *LoadOptions) ([]sdjson.Object, error)

func LoadAllT

func LoadAllT[T any](src Source, mapper func(sdjson.Object) (T, error), opts *LoadOptions) ([]T, error)

func LoadOne

func LoadOne(src Source, row string, opts *LoadOptions) (sdjson.Object, error)

func LoadOneT

func LoadOneT[T any](src Source, dir string, row string, mapper func(sdjson.Object) (T, error), opts *LoadOptions) (T, error)

func LoadSome

func LoadSome(src Source, rows []string, opts *LoadOptions) ([]sdjson.Object, error)

func LoadSomeT

func LoadSomeT[T any](src Source, rows []string, mapper func(sdjson.Object) (T, error), opts *LoadOptions) ([]T, error)

Types

type LoadOptions

type LoadOptions struct {
	StoreFile        StoreFile
	IgnoreIllegalRow bool
	Modifier         Modifier
}

type Modifier

type Modifier interface {
	ModifyRow(sdjson.Object) sdjson.Object
}

type ModifierFunc

type ModifierFunc func(sdjson.Object) sdjson.Object

func ExpandColumnShellLikeV

func ExpandColumnShellLikeV(col string, vars map[string]string) ModifierFunc

func ExpandColumnsShellLikeV

func ExpandColumnsShellLikeV(cols []string, vars map[string]string) ModifierFunc

func SetColumn

func SetColumn(col string, v any) ModifierFunc

func SetColumns

func SetColumns(colVals map[string]any) ModifierFunc

func (ModifierFunc) ModifyRow

func (f ModifierFunc) ModifyRow(row sdjson.Object) sdjson.Object

type Modifiers

type Modifiers []Modifier

func (Modifiers) ModifyRow

func (modifiers Modifiers) ModifyRow(row sdjson.Object) sdjson.Object

type ObjectStoreOptions

type ObjectStoreOptions struct {
	ObjectName string
	HttpUrl    bool
}

type Source

type Source struct {
	Root fs.FS
	Dir  string
	// contains filtered or unexported fields
}

func FsDir

func FsDir(root fs.FS, subs ...string) Source

func OsDir

func OsDir(dirname string, subs ...string) Source

func (Source) IsNil

func (src Source) IsNil() bool

func (Source) IsTrimmed

func (src Source) IsTrimmed() bool

func (Source) Sub

func (src Source) Sub(subs ...string) Source

func (Source) Trim

func (src Source) Trim() Source

type StoreFile

type StoreFile = func(fsys fs.FS, fn string) (string, error)

func ObjectStore

func ObjectStore(store sdobjectstore.Store, opts *ObjectStoreOptions) StoreFile

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL