file

package
v0.0.0-...-2c854d4 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultBaseDir            = "data"
	DefaultQuizzesSubdir      = "quizzes"
	DefaultCollectionsSubdir  = "collections"
	DefaultParticipantsSubdir = "participants"
	DefaultGroupsSubdir       = "groups"
	DefaultExamsSubdir        = "exams"
	DefaultResponsesSubdir    = "responses"
	DefaultSessionSubdir      = "sessions"

	Dirs = []string{
		GetDefaultQuizzesDir(),
		GetDefaultParticipantsDir(),
		GetDefaultExamsDir(),
		GetDefaultSessionDir(),
	}
)
View Source
var (
	ErrorMetaHeaderIsNotPresent = errors.New("Meta header was not found in file.")
)

Functions

func DefaultIndexDirFunc

func DefaultIndexDirFunc[T FileStorable, K store.Storer[T]](s *FileStore[T, K]) error

func DefaultQuizIndexDirFunc

func DefaultQuizIndexDirFunc(s *QuizFileStore) error

func GetDefaultCollectionsDir

func GetDefaultCollectionsDir() string

func GetDefaultExamsDir

func GetDefaultExamsDir() string

func GetDefaultGroupsDir

func GetDefaultGroupsDir() string

func GetDefaultParticipantsDir

func GetDefaultParticipantsDir() string

func GetDefaultQuizzesDir

func GetDefaultQuizzesDir() string

func GetDefaultResponsesDir

func GetDefaultResponsesDir() string

func GetDefaultSessionDir

func GetDefaultSessionDir() string

Types

type ExamFileStore

type ExamFileStore = FileStore[*models.Exam, *store.Store[*models.Exam]]

func NewDefaultExamFileStore

func NewDefaultExamFileStore() (*ExamFileStore, error)

func NewExamFileStore

func NewExamFileStore(config *FileStoreConfig[*models.Exam, *store.ExamStore]) (*ExamFileStore, error)

type FilePathConfig

type FilePathConfig struct {
	Dir        string
	FilePrefix string
	FileSuffix string
}

type FileStorable

type FileStorable interface {
	store.Storable

	Marshal() ([]byte, error)
	Unmarshal([]byte) error
}

type FileStore

type FileStore[T FileStorable, K store.Storer[T]] struct {
	*FileStoreConfig[T, K]

	Storer K
	// contains filtered or unexported fields
}

func NewFileStore

func NewFileStore[T FileStorable, K store.Storer[T]](config *FileStoreConfig[T, K], storer K) (*FileStore[T, K], error)

func (*FileStore[T, K]) Create

func (s *FileStore[T, K]) Create(entity T, path ...string) (T, error)

func (*FileStore[T, K]) Delete

func (s *FileStore[T, K]) Delete(id string) (T, error)

func (*FileStore[T, K]) GetPath

func (s *FileStore[T, K]) GetPath(entity T) string

func (*FileStore[T, K]) IndexDir

func (s *FileStore[T, K]) IndexDir() error

func (*FileStore[T, K]) Read

func (s *FileStore[T, K]) Read(id string) (T, error)

func (*FileStore[T, K]) ReadAll

func (s *FileStore[T, K]) ReadAll() []T

func (*FileStore[T, K]) SetPath

func (s *FileStore[T, K]) SetPath(entity T, path string) string

func (*FileStore[T, K]) Update

func (s *FileStore[T, K]) Update(entity T, id string) (T, error)

type FileStoreConfig

type FileStoreConfig[T FileStorable, K store.Storer[T]] struct {
	FilePathConfig
	IndexDirFunc     func(*FileStore[T, K]) error
	CreateEntityFunc func() T
	NoIndexOnCreate  bool
}

type FileStorer

type FileStorer[T FileStorable] interface {
	// store.Storer[T]
	Create(T, ...string) (T, error)
	ReadAll() []T
	Read(string) (T, error)
	Update(T, string) (T, error)
	Delete(string) (T, error)
}

type IndexDirFunc

type IndexDirFunc[T FileStorable, K store.Storer[T]] func(s *FileStore[T, K]) error

type ParticipantFileStore

type ParticipantFileStore struct {
	*FileStore[*models.Participant, *store.ParticipantStore]
}

func NewDefaultParticipantFileStore

func NewDefaultParticipantFileStore() (*ParticipantFileStore, error)

func (*ParticipantFileStore) ImportCSV

func (ps *ParticipantFileStore) ImportCSV(path string) ([]*models.Participant, error)

type QuizFileStore

type QuizFileStore = FileStore[*models.Quiz, *store.QuizStore]

func NewDefaultQuizFileStore

func NewDefaultQuizFileStore() (*QuizFileStore, error)

func NewQuizFileStore

func NewQuizFileStore(config *FileStoreConfig[*models.Quiz, *store.QuizStore]) (*QuizFileStore, error)

type ResponseFileStore

type ResponseFileStore = FileStore[*models.Response, *store.Store[*models.Response]]

func NewDefaultResponseFileStore

func NewDefaultResponseFileStore() (*ResponseFileStore, error)

type SessionFileStore

type SessionFileStore = FileStore[*models.Session, *store.Store[*models.Session]]

func NewDefaultSessionFileStore

func NewDefaultSessionFileStore() (*SessionFileStore, error)

Jump to

Keyboard shortcuts

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