# Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. """ Generated with http://www.json-generator.com/ With this pattern: [ '{{repeat(20)}}', { _id: '{{guid()}}', user_id: "{{index()}}", name: { first: "{{firstName()}}", last: "{{surname()}}" }, age: "{{integer(18,90)}}", location: { state: "{{state()}}", city: "{{city()}}", address: { street: "{{street()}}", number: "{{integer(10, 10000)}}" } }, company: "{{company()}}", email: "{{email()}}", manager: "{{bool()}}", twitter: function(tags) { if(this.manager) return; return "@" + this.email.split("@")[0]; }, favorites: [ "{{repeat(2,5)}}", "{{random('C', 'C++', 'Python', 'Ruby', 'Erlang', 'Lisp')}}" ] } ] """ import copy def setup_users(db, **kwargs): db.recreate() db.save_docs(copy.deepcopy(USERS_DOCS)) def setup(db, index_type="view", partitioned=False, **kwargs): db.recreate() p = str(partitioned).lower() docs = copy.deepcopy(DOCS) if partitioned: for index, doc in enumerate(docs): partition = index % PARTITIONS doc["_id"] = "{}:{}".format(partition, doc["_id"]) db.save_docs(docs, partitioned=p) if index_type == "view": add_view_indexes(db, kwargs) elif index_type == "text": add_text_indexes(db, kwargs) def add_view_indexes(db, kwargs): indexes = [ (["user_id"], "user_id"), (["name.last", "name.first"], "name"), (["age"], "age"), ( [ "location.state", "location.city", "location.address.street", "location.address.number", ], "location", ), (["company", "manager"], "company_and_manager"), (["manager"], "manager"), (["favorites"], "favorites"), (["favorites.3"], "favorites_3"), (["twitter"], "twitter"), (["ordered"], "ordered"), ] for idx, name in indexes: assert db.create_index(idx, name=name, ddoc=name) is True def add_text_indexes(db, kwargs): db.create_text_index(**kwargs) PARTITIONS = 3 DOCS = [ { "_id": "71562648-6acb-42bc-a182-df6b1f005b09", "user_id": 0, "name": {"first": "Stephanie", "last": "Kirkland"}, "age": 48, "location": { "state": "Nevada", "city": "Ronco", "address": {"street": "Evergreen Avenue", "number": 347}, }, "company": "Dreamia", "email": "stephaniekirkland@dreamia.com", "manager": False, "twitter": "@stephaniekirkland", "favorites": ["Ruby", "C", "Python"], "test": [{"a": 1}, {"b": 2}], }, { "_id": "12a2800c-4fe2-45a8-8d78-c084f4e242a9", "user_id": 1, "name": {"first": "Abbott", "last": "Watson"}, "age": 31, "location": { "state": "Connecticut", "city": "Gerber", "address": {"street": "Huntington Street", "number": 8987}, }, "company": "Talkola", "email": "abbottwatson@talkola.com", "manager": False, "twitter": "@abbottwatson", "favorites": ["Ruby", "Python", "C", {"Versions": {"Alpha": "Beta"}}], "test": [{"a": 1, "b": 2}], }, { "_id": "48ca0455-8bd0-473f-9ae2-459e42e3edd1", "user_id": 2, "name": {"first": "Shelly", "last": "Ewing"}, "age": 42, "location": { "state": "New Mexico", "city": "Thornport", "address": {"street": "Miller Avenue", "number": 7100}, }, "company": "Zialactic", "email": "shellyewing@zialactic.com", "manager": True, "favorites": ["Lisp", "Python", "Erlang"], "test_in": {"val1": 1, "val2": "val2"}, }, { "_id": "0461444c-e60a-457d-a4bb-b8d811853f21", "user_id": 3, "name": {"first": "Madelyn", "last": "Soto"}, "age": 79, "location": { "state": "Utah", "city": "Albany", "address": {"street": "Stockholm Street", "number": 710}, }, "company": "Tasmania", "email": "madelynsoto@tasmania.com", "manager": True, "favorites": [["Lisp", "Erlang", "Python"], "Erlang", "C", "Erlang"], "11111": "number_field", "22222": {"33333": "nested_number_field"}, }, { "_id": "8e1c90c0-ac18-4832-8081-40d14325bde0", "user_id": 4, "name": {"first": "Nona", "last": "Horton"}, "age": 61, "location": { "state": "Georgia", "city": "Corinne", "address": {"street": "Woodhull Street", "number": 6845}, }, "company": "Signidyne", "email": "nonahorton@signidyne.com", "manager": False, "twitter": "@nonahorton", "favorites": ["Lisp", "C", "Ruby", "Ruby"], "name.first": "name dot first", }, { "_id": "a33d5457-741a-4dce-a217-3eab28b24e3e", "user_id": 5, "name": {"first": "Sheri", "last": "Perkins"}, "age": 73, "location": { "state": "Michigan", "city": "Nutrioso", "address": {"street": "Bassett Avenue", "number": 5648}, }, "company": "Myopium", "email": "sheriperkins@myopium.com", "manager": True, "favorites": ["Lisp", "Lisp"], }, { "_id": "b31dad3f-ae8b-4f86-8327-dfe8770beb27", "user_id": 6, "name": {"first": "Tate", "last": "Guy"}, "age": 47, "location": { "state": "Illinois", "city": "Helen", "address": {"street": "Schenck Court", "number": 7392}, }, "company": "Prosely", "email": "tateguy@prosely.com", "manager": True, "favorites": ["C", "Lisp", "Ruby", "C"], }, { "_id": "659d0430-b1f4-413a-a6b7-9ea1ef071325", "user_id": 7, "name": {"first": "Jewell", "last": "Stafford"}, "age": 33, "location": { "state": "Iowa", "city": "Longbranch", "address": {"street": "Dodworth Street", "number": 3949}, }, "company": "Niquent", "email": "jewellstafford@niquent.com", "manager": True, "favorites": ["C", "C", "Ruby", "Ruby", "Erlang"], "exists_field": "should_exist1", "ordered": None, }, { "_id": "6c0afcf1-e57e-421d-a03d-0c0717ebf843", "user_id": 8, "name": {"first": "James", "last": "Mcdaniel"}, "age": 68, "location": { "state": "Maine", "city": "Craig", "address": {"street": "Greene Avenue", "number": 8776}, }, "company": "Globoil", "email": "jamesmcdaniel@globoil.com", "manager": True, "favorites": None, "exists_field": "should_exist2", "ordered": False, }, { "_id": "954272af-d5ed-4039-a5eb-8ed57e9def01", "user_id": 9, "name": {"first": "Ramona", "last": "Floyd"}, "age": 22, "location": { "state": "Missouri", "city": "Foxworth", "address": {"street": "Lott Place", "number": 1697}, }, "company": "Manglo", "email": "ramonafloyd@manglo.com", "manager": True, "twitter": None, "favorites": ["Lisp", "Erlang", "Python"], "exists_array": ["should", "exist", "array1"], "complex_field_value": '+-(){}[]^~&&*||"\\/?:!', "ordered": True, }, { "_id": "e900001d-bc48-48a6-9b1a-ac9a1f5d1a03", "user_id": 10, "name": {"first": "Charmaine", "last": "Mills"}, "age": 43, "location": { "state": "New Hampshire", "city": "Kiskimere", "address": {"street": "Nostrand Avenue", "number": 4503}, }, "company": "Lyria", "email": "charmainemills@lyria.com", "manager": True, "favorites": ["Erlang", "Erlang"], "exists_array": ["should", "exist", "array2"], "ordered": 9, }, { "_id": "b06aadcf-cd0f-4ca6-9f7e-2c993e48d4c4", "user_id": 11, "name": {"first": "Mathis", "last": "Hernandez"}, "age": 75, "location": { "state": "Hawaii", "city": "Dupuyer", "address": {"street": "Bancroft Place", "number": 2741}, }, "company": "Affluex", "email": "mathishernandez@affluex.com", "manager": True, "favorites": ["Ruby", "Lisp", "C", "C++", "C++"], "exists_object": {"should": "object"}, "ordered": 10000, }, { "_id": "5b61abc1-a3d3-4092-b9d7-ced90e675536", "user_id": 12, "name": {"first": "Patti", "last": "Rosales"}, "age": 71, "location": { "state": "Pennsylvania", "city": "Juntura", "address": {"street": "Hunterfly Place", "number": 7683}, }, "company": "Oulu", "email": "pattirosales@oulu.com", "manager": True, "favorites": ["C", "Python", "Lisp"], "exists_object": {"another": "object"}, "ordered": "a", }, { "_id": "b1e70402-8add-4068-af8f-b4f3d0feb049", "user_id": 13, "name": {"first": "Whitley", "last": "Harvey"}, "age": 78, "location": { "state": "Minnesota", "city": "Trail", "address": {"street": "Pleasant Place", "number": 8766}, }, "company": None, "email": "whitleyharvey@fangold.com", "manager": False, "twitter": "@whitleyharvey", "favorites": ["C", "Ruby", "Ruby"], "ordered": "A", }, { "_id": "c78c529f-0b07-4947-90a6-d6b7ca81da62", "user_id": 14, "name": {"first": "Faith", "last": "Hess"}, "age": 51, "location": { "state": "North Dakota", "city": "Axis", "address": {"street": "Brightwater Avenue", "number": 1106}, }, "foo": "bar car apple", "company": "Pharmex", "email": "faithhess@pharmex.com", "favorites": ["Erlang", "Python", "Lisp"], "ordered": "aa", }, ] USERS_DOCS = [ { "_id": "org.couchdb.user:demo01", "name": "demo01", "username": "demo01", "password": "apple01", "roles": ["design"], "order": 1, "type": "user", }, { "_id": "org.couchdb.user:demo02", "name": "demo02", "username": "demo02", "password": "apple02", "roles": ["reader"], "order": 2, "type": "user", }, { "_id": "org.couchdb.user:demo03", "name": "demo03", "username": "demo03", "password": "apple03", "roles": ["reader", "writer"], "order": 3, "type": "user", }, ]