view env/lib/python3.9/site-packages/planemo/database/interface.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line source

"""Describe the interface classes of the planemo.database package."""

import abc

from six import add_metaclass


@add_metaclass(abc.ABCMeta)
class DatabaseSource(object):
    """Interface describing a source of profile databases."""

    @abc.abstractmethod
    def create_database(self, identifier):
        """Create a database with specified short identifier.

        Throw an exception if it already exists.
        """

    @abc.abstractmethod
    def delete_database(self, identifier):
        """Delete a database with specified short identifier.

        Throw an exception if it already exists.
        """

    @abc.abstractmethod
    def list_databases(self):
        """Return identifiers associated with database source."""

    @abc.abstractmethod
    def sqlalchemy_url(self, identifier):
        """Return a URL string for use by sqlalchemy."""


__all__ = (
    "DatabaseSource",
)