class CustomIndexationModelF(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() fooindex = sheraf.Index(foo, key="foo", unique=True) barindex = sheraf.Index(bar, key="bar") @fooindex.values def fooindex_values(self, value): return value.lower() if value else None
class CustomIndexationModelB(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() fooindex = sheraf.Index( "foo", key="foo", unique=True, values=lambda string: {string.lower() if string else None}, ) barindex = sheraf.Index("bar", key="bar")
class CustomSearchModelB(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() fooindex = sheraf.Index( "foo", key="foo", unique=True, values=lambda string: {string.lower()}, search=lambda string: [string.lower()[::-1], string.lower()], ) barindex = sheraf.Index("bar", key="bar")
class CustomSearchModelE(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() fooindex = sheraf.Index( foo, key="foo", unique=True, values=lambda string: {string.lower()}, ) barindex = sheraf.Index(bar, key="bar") @fooindex.search def search_foo(self, value): return [value.lower()[::-1], value.lower()]
class Model(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar) @theindex.values def values(self, value): return {value.lower(), value.upper()}
class CommonValuesComputedTogetherModelB(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar) @theindex.values(foo, bar) def theindex_values(self, foo_, bar_): return {f"{foo_} {bar_}"}
class CommonValuesComputedSeparatelyModelA(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar) @theindex.values(foo) @theindex.values(bar) def values(self, x): return {x.upper()}
class CommonModelDefaultValuesMethodsA(tests.IntAutoModel): def lower(self, value): return {value.lower()} foo = sheraf.StringAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar, values=lower) @theindex.values(bar) def upper(self, bar): return {bar.upper()}
class CowboyD(tests.IntAutoModel): farms = sheraf.LargeListAttribute(sheraf.ModelAttribute("FarmD")).index() farm_size = sheraf.Index(farms) @farm_size.search def search_farm_size(self, size): return size @farm_size.values def index_farm_size(self, farms): return {farm.size for farm in farms}
class CommonModelDifferentValuesMethodsB(tests.IntAutoModel): foo = sheraf.StringAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar) @theindex.values(foo) def lower(self, foo): return {foo.lower()} @theindex.values(bar) def upper(self, bar): return {bar.upper()}
class CowboyC(tests.IntAutoModel): farm = sheraf.ModelAttribute("FarmC").index() farm_size = sheraf.Index(farm) @farm_size.search def search_farm_size(self, size): return size @farm_size.values def index_farm_size(self, farm): return farm.size
class M(tests.UUIDAutoModel): foo = sheraf.IntegerAttribute() evens = sheraf.Index(foo, values=lambda x: {x} if x % 2 == 0 else {})
class B(A): bindex = sheraf.Index("foo")
class Model(tests.IntAutoModel): foo = sheraf.SimpleAttribute() bar = sheraf.SimpleAttribute() theindex = sheraf.Index(foo, bar, unique=True)
class ModelA(tests.UUIDAutoModel): i = sheraf.Index()
class ModelB(tests.IntAutoModel): foo = sheraf.SimpleAttribute() fooindex = sheraf.Index("foo")
class ModelC(tests.UUIDAutoModel): i = sheraf.Index("invalid")
class ModelE(tests.UUIDAutoModel): foo = sheraf.SimpleAttribute() ok = sheraf.Index(foo) i = sheraf.Index(ok)
class UniqueModelC(tests.IntAutoModel): my_attribute = sheraf.SimpleAttribute() my_attribute_index = sheraf.Index(my_attribute, unique=True, key="my_attribute") other = sheraf.SimpleAttribute()
class MultipleModelC(tests.IntAutoModel): my_attribute = sheraf.SimpleAttribute() my_attribute_index = sheraf.Index(my_attribute, key="my_attribute")
class MultipleKeysIndexModelC(tests.IntAutoModel): my_attribute = sheraf.SimpleAttribute() key_1 = sheraf.Index(my_attribute) key_2 = sheraf.Index(my_attribute)