package model

import (
	"encoding/json"
	"io"
)

// Block is the basic data unit.
type Block struct {
	ID         string                 `json:"id"`
	ParentID   string                 `json:"parentId"`
	RootID     string                 `json:"rootId"`
	ModifiedBy string                 `json:"modifiedBy"`
	Schema     int64                  `json:"schema"`
	Type       string                 `json:"type"`
	Title      string                 `json:"title"`
	Fields     map[string]interface{} `json:"fields"`
	CreateAt   int64                  `json:"createAt"`
	UpdateAt   int64                  `json:"updateAt"`
	DeleteAt   int64                  `json:"deleteAt"`
}

// Archive is an import / export archive
type Archive struct {
	Version int64   `json:"version"`
	Date    int64   `json:"date"`
	Blocks  []Block `json:"blocks"`
}

func BlocksFromJSON(data io.Reader) []Block {
	var blocks []Block
	json.NewDecoder(data).Decode(&blocks)
	return blocks
}
