// +build ignore

// Package model is an interface for data modelling
package model

import (
	"github.com/unistack-org/micro/v3/codec"
	"github.com/unistack-org/micro/v3/logger"
	"github.com/unistack-org/micro/v3/store"
	"github.com/unistack-org/micro/v3/sync"
)

type Options struct {
	// Database to write to
	Database string
	// for serialising
	Codec codec.Codec
	// for locking
	Sync sync.Sync
	// for storage
	Store store.Store
	// for logger
	Logger logger.Logger
}

type Option func(o *Options)

// Logger sets the logger
func Logger(l logger.Logger) Option {
	return func(o *Options) {
		o.Logger = l
	}
}

type ReadOptions struct{}

type ReadOption func(o *ReadOptions)

type DeleteOptions struct{}

type DeleteOption func(o *DeleteOptions)