using Raven.Client.Documents; using Raven.Client.Documents.Indexes; using Raven.Client.Documents.Indexes.Spatial; using Raven.Client.Documents.Operations.Attachments; using System.Linq.Expressions; namespace zero.Persistence; public abstract class ZeroJavascriptIndex : AbstractJavaScriptIndexCreationTask, IZeroIndexDefinition { public ZeroJavascriptIndex() { Create(); } protected virtual void Create() { } public virtual void Setup(IZeroOptions options, IDocumentStore store) { } public new string Reduce { get => base.Reduce; set => base.Reduce = value; } public new string OutputReduceToCollection { get => base.OutputReduceToCollection; set => base.OutputReduceToCollection = value; } public new string PatternReferencesCollectionName { get => base.PatternReferencesCollectionName; set => base.PatternReferencesCollectionName = value; } public new string PatternForOutputReduceToCollectionReferences { get => base.PatternForOutputReduceToCollectionReferences; set => base.PatternForOutputReduceToCollectionReferences = value; } // AbstractIndexCreationTask public new IJsonObject AsJson(object doc) => base.AsJson(doc); public new IEnumerable AttachmentsFor(object doc) => base.AttachmentsFor(doc); public new IEnumerable CounterNamesFor(object doc) => base.CounterNamesFor(doc); public new IJsonObject.IMetadata MetadataFor(object doc) => base.MetadataFor(doc); public new IEnumerable TimeSeriesNamesFor(object doc) => base.TimeSeriesNamesFor(doc); // AbstractIndexCreationTaskBase public new object CreateField(string name, object value, CreateFieldOptions options) => base.CreateField(name, value, options); public new object CreateField(string name, object value, bool stored, bool analyzed) => base.CreateField(name, value, stored, analyzed); public new object CreateField(string name, object value) => base.CreateField(name, value); // AbstractCommonApiForIndexes public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new T? TryConvert(object value) where T : struct => base.TryConvert(value); } public abstract class ZeroMultiMapIndex : AbstractMultiMapIndexCreationTask, IZeroIndexDefinition { public ZeroMultiMapIndex() { Create(); } protected virtual void Create() { } public virtual void Setup(IZeroOptions options, IDocumentStore store) { } // AbstractMultiMapIndexCreationTask public new void AddMap(Expression, IEnumerable>> map) => base.AddMap(map); public new void AddMapForAll(Expression, IEnumerable>> map) => base.AddMapForAll(map); // AbstractGenericIndexCreationTask public new Expression, IEnumerable>> Reduce { get => base.Reduce; set => base.Reduce = value; } public new string OutputReduceToCollection { get => base.OutputReduceToCollection; set => base.OutputReduceToCollection = value; } public new IDictionary IndexesStrings { get => base.IndexesStrings; set => base.IndexesStrings = value; } public new IDictionary>, FieldIndexing> Indexes { get => base.Indexes; set => base.Indexes = value; } public new IDictionary SpatialIndexesStrings { get => base.SpatialIndexesStrings; set => base.SpatialIndexesStrings = value; } public new IDictionary>, SpatialOptions> SpatialIndexes { get => base.SpatialIndexes; set => base.SpatialIndexes = value; } public new IDictionary TermVectorsStrings { get => base.TermVectorsStrings; set => base.TermVectorsStrings = value; } public new IDictionary>, FieldTermVector> TermVectors { get => base.TermVectors; set => base.TermVectors = value; } public new IDictionary AnalyzersStrings { get => base.AnalyzersStrings; set => base.AnalyzersStrings = value; } public new IDictionary>, string> Analyzers { get => base.Analyzers; set => base.Analyzers = value; } public new ISet>> IndexSuggestions { get => base.IndexSuggestions; set => base.IndexSuggestions = value; } public new IDictionary StoresStrings { get => base.StoresStrings; set => base.StoresStrings = value; } public new IDictionary>, FieldStorage> Stores { get => base.Stores; set => base.Stores = value; } public new string PatternReferencesCollectionName { get => base.PatternReferencesCollectionName; set => base.PatternReferencesCollectionName = value; } public new Expression> PatternForOutputReduceToCollectionReferences { get => base.PatternForOutputReduceToCollectionReferences; set => base.PatternForOutputReduceToCollectionReferences = value; } public new void AddAssembly(AdditionalAssembly assembly) => base.AddAssembly(assembly); public new void Analyze(string field, string analyzer) => base.Analyze(field, analyzer); public new void Analyze(Expression> field, string analyzer) => base.Analyze(field, analyzer); public new void Index(Expression> field, FieldIndexing indexing) => base.Index(field, indexing); public new void Index(string field, FieldIndexing indexing) => base.Index(field, indexing); public new void Spatial(string field, Func indexing) => base.Spatial(field, indexing); public new void Spatial(Expression> field, Func indexing) => base.Spatial(field, indexing); public new void Store(string field, FieldStorage storage) => base.Store(field, storage); public new void Store(Expression> field, FieldStorage storage) => base.Store(field, storage); public new void StoreAllFields(FieldStorage storage) => base.StoreAllFields(storage); public new void Suggestion(Expression> field) => base.Suggestion(field); public new void TermVector(string field, FieldTermVector termVector) => base.TermVector(field, termVector); public new void TermVector(Expression> field, FieldTermVector termVector) => base.TermVector(field, termVector); // AbstractIndexCreationTask public new IJsonObject AsJson(object doc) => base.AsJson(doc); public new IEnumerable AttachmentsFor(object doc) => base.AttachmentsFor(doc); public new IEnumerable CounterNamesFor(object doc) => base.CounterNamesFor(doc); public new IJsonObject.IMetadata MetadataFor(object doc) => base.MetadataFor(doc); public new IEnumerable TimeSeriesNamesFor(object doc) => base.TimeSeriesNamesFor(doc); // AbstractIndexCreationTaskBase public new object CreateField(string name, object value, CreateFieldOptions options) => base.CreateField(name, value, options); public new object CreateField(string name, object value, bool stored, bool analyzed) => base.CreateField(name, value, stored, analyzed); public new object CreateField(string name, object value) => base.CreateField(name, value); // AbstractCommonApiForIndexes public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new T? TryConvert(object value) where T : struct => base.TryConvert(value); } public abstract class ZeroMultiMapIndex : AbstractMultiMapIndexCreationTask, IZeroIndexDefinition { public ZeroMultiMapIndex() { Create(); } protected virtual void Create() { } public virtual void Setup(IZeroOptions options, IDocumentStore store) { } // AbstractMultiMapIndexCreationTask public new void AddMap(Expression, IEnumerable>> map) => base.AddMap(map); public new void AddMapForAll(Expression, IEnumerable>> map) => base.AddMapForAll(map); // AbstractGenericIndexCreationTask public new Expression, IEnumerable>> Reduce { get => base.Reduce; set => base.Reduce = value; } public new string OutputReduceToCollection { get => base.OutputReduceToCollection; set => base.OutputReduceToCollection = value; } public new IDictionary IndexesStrings { get => base.IndexesStrings; set => base.IndexesStrings = value; } public new IDictionary>, FieldIndexing> Indexes { get => base.Indexes; set => base.Indexes = value; } public new IDictionary SpatialIndexesStrings { get => base.SpatialIndexesStrings; set => base.SpatialIndexesStrings = value; } public new IDictionary>, SpatialOptions> SpatialIndexes { get => base.SpatialIndexes; set => base.SpatialIndexes = value; } public new IDictionary TermVectorsStrings { get => base.TermVectorsStrings; set => base.TermVectorsStrings = value; } public new IDictionary>, FieldTermVector> TermVectors { get => base.TermVectors; set => base.TermVectors = value; } public new IDictionary AnalyzersStrings { get => base.AnalyzersStrings; set => base.AnalyzersStrings = value; } public new IDictionary>, string> Analyzers { get => base.Analyzers; set => base.Analyzers = value; } public new ISet>> IndexSuggestions { get => base.IndexSuggestions; set => base.IndexSuggestions = value; } public new IDictionary StoresStrings { get => base.StoresStrings; set => base.StoresStrings = value; } public new IDictionary>, FieldStorage> Stores { get => base.Stores; set => base.Stores = value; } public new string PatternReferencesCollectionName { get => base.PatternReferencesCollectionName; set => base.PatternReferencesCollectionName = value; } public new Expression> PatternForOutputReduceToCollectionReferences { get => base.PatternForOutputReduceToCollectionReferences; set => base.PatternForOutputReduceToCollectionReferences = value; } public new void AddAssembly(AdditionalAssembly assembly) => base.AddAssembly(assembly); public new void Analyze(string field, string analyzer) => base.Analyze(field, analyzer); public new void Analyze(Expression> field, string analyzer) => base.Analyze(field, analyzer); public new void Index(Expression> field, FieldIndexing indexing) => base.Index(field, indexing); public new void Index(string field, FieldIndexing indexing) => base.Index(field, indexing); public new void Spatial(string field, Func indexing) => base.Spatial(field, indexing); public new void Spatial(Expression> field, Func indexing) => base.Spatial(field, indexing); public new void Store(string field, FieldStorage storage) => base.Store(field, storage); public new void Store(Expression> field, FieldStorage storage) => base.Store(field, storage); public new void StoreAllFields(FieldStorage storage) => base.StoreAllFields(storage); public new void Suggestion(Expression> field) => base.Suggestion(field); public new void TermVector(string field, FieldTermVector termVector) => base.TermVector(field, termVector); public new void TermVector(Expression> field, FieldTermVector termVector) => base.TermVector(field, termVector); // AbstractIndexCreationTask public new IJsonObject AsJson(object doc) => base.AsJson(doc); public new IEnumerable AttachmentsFor(object doc) => base.AttachmentsFor(doc); public new IEnumerable CounterNamesFor(object doc) => base.CounterNamesFor(doc); public new IJsonObject.IMetadata MetadataFor(object doc) => base.MetadataFor(doc); public new IEnumerable TimeSeriesNamesFor(object doc) => base.TimeSeriesNamesFor(doc); // AbstractIndexCreationTaskBase public new object CreateField(string name, object value, CreateFieldOptions options) => base.CreateField(name, value, options); public new object CreateField(string name, object value, bool stored, bool analyzed) => base.CreateField(name, value, stored, analyzed); public new object CreateField(string name, object value) => base.CreateField(name, value); // AbstractCommonApiForIndexes public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new T? TryConvert(object value) where T : struct => base.TryConvert(value); } public abstract class ZeroIndex : AbstractIndexCreationTask, IZeroIndexDefinition { public ZeroIndex() { Create(); } protected virtual void Create() { } public virtual void Setup(IZeroOptions options, IDocumentStore store) { } // AbstractIndexCreationTask public new Expression, IEnumerable>> Map { get => base.Map; set => base.Map = value; } // AbstractGenericIndexCreationTask public new Expression, IEnumerable>> Reduce { get => base.Reduce; set => base.Reduce = value; } public new string OutputReduceToCollection { get => base.OutputReduceToCollection; set => base.OutputReduceToCollection = value; } public new IDictionary IndexesStrings { get => base.IndexesStrings; set => base.IndexesStrings = value; } public new IDictionary>, FieldIndexing> Indexes { get => base.Indexes; set => base.Indexes = value; } public new IDictionary SpatialIndexesStrings { get => base.SpatialIndexesStrings; set => base.SpatialIndexesStrings = value; } public new IDictionary>, SpatialOptions> SpatialIndexes { get => base.SpatialIndexes; set => base.SpatialIndexes = value; } public new IDictionary TermVectorsStrings { get => base.TermVectorsStrings; set => base.TermVectorsStrings = value; } public new IDictionary>, FieldTermVector> TermVectors { get => base.TermVectors; set => base.TermVectors = value; } public new IDictionary AnalyzersStrings { get => base.AnalyzersStrings; set => base.AnalyzersStrings = value; } public new IDictionary>, string> Analyzers { get => base.Analyzers; set => base.Analyzers = value; } public new ISet>> IndexSuggestions { get => base.IndexSuggestions; set => base.IndexSuggestions = value; } public new IDictionary StoresStrings { get => base.StoresStrings; set => base.StoresStrings = value; } public new IDictionary>, FieldStorage> Stores { get => base.Stores; set => base.Stores = value; } public new string PatternReferencesCollectionName { get => base.PatternReferencesCollectionName; set => base.PatternReferencesCollectionName = value; } public new Expression> PatternForOutputReduceToCollectionReferences { get => base.PatternForOutputReduceToCollectionReferences; set => base.PatternForOutputReduceToCollectionReferences = value; } public new void AddAssembly(AdditionalAssembly assembly) => base.AddAssembly(assembly); public new void Analyze(string field, string analyzer) => base.Analyze(field, analyzer); public new void Analyze(Expression> field, string analyzer) => base.Analyze(field, analyzer); public new void Index(Expression> field, FieldIndexing indexing) => base.Index(field, indexing); public new void Index(string field, FieldIndexing indexing) => base.Index(field, indexing); public new void Spatial(string field, Func indexing) => base.Spatial(field, indexing); public new void Spatial(Expression> field, Func indexing) => base.Spatial(field, indexing); public new void Store(string field, FieldStorage storage) => base.Store(field, storage); public new void Store(Expression> field, FieldStorage storage) => base.Store(field, storage); public new void StoreAllFields(FieldStorage storage) => base.StoreAllFields(storage); public new void Suggestion(Expression> field) => base.Suggestion(field); public new void TermVector(string field, FieldTermVector termVector) => base.TermVector(field, termVector); public new void TermVector(Expression> field, FieldTermVector termVector) => base.TermVector(field, termVector); // AbstractIndexCreationTask public new IJsonObject AsJson(object doc) => base.AsJson(doc); public new IEnumerable AttachmentsFor(object doc) => base.AttachmentsFor(doc); public new IEnumerable CounterNamesFor(object doc) => base.CounterNamesFor(doc); public new IJsonObject.IMetadata MetadataFor(object doc) => base.MetadataFor(doc); public new IEnumerable TimeSeriesNamesFor(object doc) => base.TimeSeriesNamesFor(doc); // AbstractIndexCreationTaskBase public new object CreateField(string name, object value, CreateFieldOptions options) => base.CreateField(name, value, options); public new object CreateField(string name, object value, bool stored, bool analyzed) => base.CreateField(name, value, stored, analyzed); public new object CreateField(string name, object value) => base.CreateField(name, value); // AbstractCommonApiForIndexes public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new T? TryConvert(object value) where T : struct => base.TryConvert(value); } public abstract class ZeroIndex : ZeroIndex { } public abstract class ZeroIndex : AbstractIndexCreationTask, IZeroIndexDefinition { public ZeroIndex() { Create(); } protected virtual void Create() { } public virtual void Setup(IZeroOptions options, IDocumentStore store) { } // AbstractIndexCreationTask public new IJsonObject AsJson(object doc) => base.AsJson(doc); public new IEnumerable AttachmentsFor(object doc) => base.AttachmentsFor(doc); public new IEnumerable CounterNamesFor(object doc) => base.CounterNamesFor(doc); public new IJsonObject.IMetadata MetadataFor(object doc) => base.MetadataFor(doc); public new IEnumerable TimeSeriesNamesFor(object doc) => base.TimeSeriesNamesFor(doc); // AbstractIndexCreationTaskBase public new object CreateField(string name, object value, CreateFieldOptions options) => base.CreateField(name, value, options); public new object CreateField(string name, object value, bool stored, bool analyzed) => base.CreateField(name, value, stored, analyzed); public new object CreateField(string name, object value) => base.CreateField(name, value); // AbstractCommonApiForIndexes public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func func) => base.Recurse(source, func); public new IEnumerable Recurse(TSource source, Func> func) => base.Recurse(source, func); public new T? TryConvert(object value) where T : struct => base.TryConvert(value); } public interface IZeroIndexDefinition : IAbstractIndexCreationTask { void Setup(IZeroOptions options, IDocumentStore store); }