Search Apps Documentation Source Content File Folder Download Copy Actions Download

board.gno

2.47 Kb · 106 lines
  1package boards
  2
  3import "time"
  4
  5// Board defines a type for boards.
  6type Board struct {
  7	// ID is the unique identifier of the board.
  8	ID ID
  9
 10	// Name is the current name of the board.
 11	Name string
 12
 13	// Aliases contains a list of alternative names for the board.
 14	Aliases []string
 15
 16	// Readonly indicates that the board is readonly.
 17	Readonly bool
 18
 19	// Threads contains board threads.
 20	Threads PostStorage
 21
 22	// ThreadsSequence generates sequential ID for new threads.
 23	ThreadsSequence IdentifierGenerator
 24
 25	// Permissions enables support for permissioned boards.
 26	// This type of boards allows managing members with roles and permissions.
 27	// It also enables the implementation of permissioned execution of board related features.
 28	Permissions Permissions
 29
 30	// Creator is the account address that created the board.
 31	Creator address
 32
 33	// Meta allows storing board metadata.
 34	Meta any
 35
 36	// CreatedAt is the board's creation time.
 37	CreatedAt time.Time
 38
 39	// UpdatedAt is the board's update time.
 40	UpdatedAt time.Time
 41}
 42
 43// New creates a new basic non permissioned board.
 44func New(id ID) *Board {
 45	return &Board{
 46		ID:              id,
 47		Threads:         NewPostStorage(),
 48		ThreadsSequence: NewIdentifierGenerator(),
 49		CreatedAt:       time.Now(),
 50	}
 51}
 52
 53// SetID sets board ID value.
 54func (board *Board) SetID(v ID) {
 55	board.ID = v
 56}
 57
 58// SetName sets name value.
 59func (board *Board) SetName(v string) {
 60	board.Name = v
 61}
 62
 63// SetAliases sets board name aliases.
 64func (board *Board) SetAliases(v []string) {
 65	board.Aliases = v
 66}
 67
 68// SetReadonly sets readonly value.
 69func (board *Board) SetReadonly(v bool) {
 70	board.Readonly = v
 71}
 72
 73// SetThreadStorage sets the storage where board threads are stored.
 74func (board *Board) SetThreadStorage(v PostStorage) {
 75	board.Threads = v
 76}
 77
 78// SetThreadsSequence sets the sequential thread ID generator.
 79func (board *Board) SetThreadsSequence(v IdentifierGenerator) {
 80	board.ThreadsSequence = v
 81}
 82
 83// SetPermissions sets permissions value.
 84func (board *Board) SetPermissions(v Permissions) {
 85	board.Permissions = v
 86}
 87
 88// SetCreator sets the address of the account that created the board.
 89func (board *Board) SetCreator(v address) {
 90	board.Creator = v
 91}
 92
 93// SetCreatedAt sets the time when board was created.
 94func (board *Board) SetCreatedAt(v time.Time) {
 95	board.CreatedAt = v
 96}
 97
 98// SetUpdatedAt sets the time when a board value was updated.
 99func (board *Board) SetUpdatedAt(v time.Time) {
100	board.UpdatedAt = v
101}
102
103// SetMeta sets board metadata.
104func (board *Board) SetMeta(v any) {
105	board.Meta = v
106}