Skip to content

openpermissions/perch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Perch

A library used in Open Permissions Platform services for accessing registry data stored in CouchDB.

NOTE: To use this library CouchDB must be configured to support Python views. See https://pythonhosted.org/CouchDB/views.html

Migrations

There is support for simple migrations when schemas change.

To create an empty migration using the command line interface, run:

# create an initial migration file for the perch.Organisation document

perch migrations create perch.Organisation

This will create a file in perch/migrations containing a function that will be applied to each perch.Organisation document in the database.

For example, this migration will add a key "test" with value 1 to each organisation:

import perch

VERSION = '36d0e91bf63d479597bb1fccec30a3b0'
PREVIOUS_VERSION = ''


@perch.migrate.migration(perch.Organisation, VERSION, PREVIOUS_VERSION)
def migrate_organisation(instance):
    instance.test = 1

    return instance

NOTE: Versions are simply UUIDs, the graph of migrations is calculated by chaining together the version and previous version.

After a migration has been applied the doc_version will be updated to match the last migration

To run migrations:

perch migrations run

Migrating subresources

Subresource can be migrated the same way as documents (e.g. perch migrations create perch.Service), however the migration version refers to the document not the subresource.

If a subresource and document migration have the same previous version the subresources are migrated before the rest of the document. For example, if the following migrations are created:

perch create perch.Organisation --previous=36d0e91bf63d479597bb1fccec30a3b0
perch create perch.Service --previous=36d0e91bf63d479597bb1fccec30a3b0

then the perch.Service migration will run first and the final doc_version will match the perch.Organisation version.