Add NoIndexOnCreate config option
This commit is contained in:
parent
3cdfa72403
commit
3196982a64
4 changed files with 27 additions and 78 deletions
|
@ -36,10 +36,11 @@ type FilePathConfig struct {
|
||||||
|
|
||||||
type FileStoreConfig[T store.Storable, K Storer[T]] struct {
|
type FileStoreConfig[T store.Storable, K Storer[T]] struct {
|
||||||
FilePathConfig
|
FilePathConfig
|
||||||
FilepathFunc func(T, *FilePathConfig) string
|
FilepathFunc func(T, *FilePathConfig) string
|
||||||
UnmarshalFunc func(K, string, []byte) (T, error)
|
UnmarshalFunc func(K, string, []byte) (T, error)
|
||||||
MarshalFunc func(K, string, T) error
|
MarshalFunc func(K, string, T) error
|
||||||
IndexDirFunc func(*FileStore[T, K]) error
|
IndexDirFunc func(*FileStore[T, K]) error
|
||||||
|
NoIndexOnCreate bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type FileStore[T store.Storable, K Storer[T]] struct {
|
type FileStore[T store.Storable, K Storer[T]] struct {
|
||||||
|
@ -130,10 +131,12 @@ func NewFileStore[T store.Storable, K Storer[T]](config *FileStoreConfig[T, K],
|
||||||
paths: make(map[string]string, 0),
|
paths: make(map[string]string, 0),
|
||||||
}
|
}
|
||||||
|
|
||||||
err := store.IndexDir()
|
if !config.NoIndexOnCreate {
|
||||||
if err != nil {
|
err := store.IndexDir()
|
||||||
return nil, err
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return store, nil
|
return store, nil
|
||||||
|
|
|
@ -212,57 +212,3 @@ func removeQuizHeader(path string) (*models.Meta, error) {
|
||||||
|
|
||||||
return &meta, nil
|
return &meta, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// filepath.Join(BaseDir, QuizzesDir),
|
|
||||||
// "quiz",
|
|
||||||
// ".md",
|
|
||||||
// DefaultIndexDirFunc,
|
|
||||||
// nil,
|
|
||||||
// func(s *store.QuizStore, filepath string, content []byte) (*models.Quiz, error) {
|
|
||||||
// quiz, meta, err := models.MarkdownToQuiz(string(content))
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var errQuizAlreadyPresent *store.ErrQuizAlreadyPresent
|
|
||||||
|
|
||||||
// q, err := s.Create(quiz)
|
|
||||||
// if err != nil && !errors.As(err, &errQuizAlreadyPresent) {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if meta == nil {
|
|
||||||
// writeQuizHeader(filepath, &models.Meta{
|
|
||||||
// ID: q.ID,
|
|
||||||
// CreatedAt: time.Now(),
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return q, nil
|
|
||||||
// },
|
|
||||||
// func(s *store.QuizStore, filePath string, quiz *models.Quiz) error {
|
|
||||||
// markdown, err := models.QuizToMarkdown(quiz)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// file, err := os.Create(filePath)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// defer file.Close()
|
|
||||||
|
|
||||||
// markdownWithMetaHeader, err := addMetaHeaderToMarkdown(markdown, &quiz.Meta)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// _, err = file.Write([]byte(markdownWithMetaHeader))
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return nil
|
|
||||||
// },
|
|
||||||
// )
|
|
||||||
|
|
|
@ -37,6 +37,8 @@ func (t *quizTestSuite) TestReadAll() {
|
||||||
len(result),
|
len(result),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
_, err = removeQuizHeader(filepath.Join(store.Dir, "quiz_5.md"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,10 +46,11 @@ func (t *quizTestSuite) TestCreate() {
|
||||||
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
||||||
store, err := NewQuizFileStore(
|
store, err := NewQuizFileStore(
|
||||||
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
||||||
FilePathConfig: filePathConfig,
|
FilePathConfig: filePathConfig,
|
||||||
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
||||||
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
||||||
MarshalFunc: DefaultMarshalQuizFunc,
|
MarshalFunc: DefaultMarshalQuizFunc,
|
||||||
|
NoIndexOnCreate: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
|
@ -106,10 +109,11 @@ func (t *quizTestSuite) TestDelete() {
|
||||||
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
||||||
store, err := NewQuizFileStore(
|
store, err := NewQuizFileStore(
|
||||||
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
||||||
FilePathConfig: filePathConfig,
|
FilePathConfig: filePathConfig,
|
||||||
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
||||||
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
||||||
MarshalFunc: DefaultMarshalQuizFunc,
|
MarshalFunc: DefaultMarshalQuizFunc,
|
||||||
|
NoIndexOnCreate: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
|
@ -145,10 +149,11 @@ func (t *quizTestSuite) TestUpdate() {
|
||||||
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
filePathConfig := FilePathConfig{"testdata/quizzes", "quiz", ".md"}
|
||||||
store, err := NewQuizFileStore(
|
store, err := NewQuizFileStore(
|
||||||
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
&FileStoreConfig[*models.Quiz, *store.QuizStore]{
|
||||||
FilePathConfig: filePathConfig,
|
FilePathConfig: filePathConfig,
|
||||||
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
IndexDirFunc: DefaultIndexDirFunc[*models.Quiz, *store.QuizStore],
|
||||||
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
UnmarshalFunc: DefaultUnmarshalQuizFunc,
|
||||||
MarshalFunc: DefaultMarshalQuizFunc,
|
MarshalFunc: DefaultMarshalQuizFunc,
|
||||||
|
NoIndexOnCreate: true,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
t.Nil(err)
|
t.Nil(err)
|
||||||
|
|
5
store/file/testdata/quizzes/quiz_5.md
vendored
5
store/file/testdata/quizzes/quiz_5.md
vendored
|
@ -1,8 +1,3 @@
|
||||||
---
|
|
||||||
id: edadaa90-802f-4a74-83cc-4b4cb5192f28
|
|
||||||
created_at: 2023-11-17T16:50:38.479350601+01:00
|
|
||||||
updated_at: 0001-01-01T00:00:00Z
|
|
||||||
---
|
|
||||||
This quiz is initially without metadata.
|
This quiz is initially without metadata.
|
||||||
|
|
||||||
* Answer 1
|
* Answer 1
|
||||||
|
|
Loading…
Reference in a new issue