diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7c0f04f3..afe75c8b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -33,20 +33,26 @@ jobs: matrix: python-version: [3.7, 3.8, 3.9] requirements-level: [pypi] - db-service: [postgresql10, postgresql13] + db-service: [postgresql10, postgresql13, mysql8] search-service: [opensearch2,elasticsearch7] node-version: [16.x] exclude: - python-version: 3.7 db-service: postgresql13 - + + - python-version: 3.7 + db-service: mysql8 + include: - search-service: opensearch2 SEARCH_EXTRAS: "opensearch2" - search-service: elasticsearch7 SEARCH_EXTRAS: "elasticsearch7" - + + - db-service: mysql8 + DB_EXTRAS: "mysql" + env: DB: ${{ matrix.db-service }} SEARCH: ${{ matrix.search-service }} diff --git a/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py b/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py index 822f3cdb..ed95a61f 100644 --- a/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py +++ b/invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py @@ -20,10 +20,10 @@ def upgrade(): """Upgrade database.""" op.create_table( "vocabularies_schemes", - sa.Column("id", sa.String(), nullable=False), - sa.Column("parent_id", sa.String(), nullable=False), - sa.Column("name", sa.String(), nullable=True), - sa.Column("uri", sa.String(), nullable=True), + sa.Column("id", sa.String(255), nullable=False), + sa.Column("parent_id", sa.String(255), nullable=False), + sa.Column("name", sa.String(255), nullable=True), + sa.Column("uri", sa.String(255), nullable=True), sa.PrimaryKeyConstraint( "id", "parent_id", name=op.f("pk_vocabularies_schemes") ), diff --git a/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py b/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py index a936f5ed..6c746d95 100644 --- a/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py +++ b/invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py @@ -78,8 +78,8 @@ def upgrade(): ) op.create_table( "vocabularies_types", - sa.Column("id", sa.String(), nullable=False), - sa.Column("pid_type", sa.String(), nullable=True), + sa.Column("id", sa.String(255), nullable=False), + sa.Column("pid_type", sa.String(255), nullable=True), sa.PrimaryKeyConstraint("id", name=op.f("pk_vocabularies_types")), sa.UniqueConstraint("pid_type", name=op.f("uq_vocabularies_types_pid_type")), ) diff --git a/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py b/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py index 9617d840..bf27378e 100644 --- a/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py +++ b/invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py @@ -45,7 +45,7 @@ def upgrade(): nullable=True, ), sa.Column("version_id", sa.Integer(), nullable=False), - sa.Column("pid", sa.String(), nullable=True), + sa.Column("pid", sa.String(255), nullable=True), sa.PrimaryKeyConstraint("id", name=op.f("pk_funder_metadata")), sa.UniqueConstraint("pid", name=op.f("uq_funder_metadata_pid")), ) diff --git a/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py b/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py index cd12fa31..ec7e228f 100644 --- a/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py +++ b/invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py @@ -45,7 +45,7 @@ def upgrade(): nullable=True, ), sa.Column("version_id", sa.Integer(), nullable=False), - sa.Column("pid", sa.String(), nullable=True), + sa.Column("pid", sa.String(255), nullable=True), sa.PrimaryKeyConstraint("id", name=op.f("pk_award_metadata")), sa.UniqueConstraint("pid", name=op.f("uq_award_metadata_pid")), ) diff --git a/invenio_vocabularies/contrib/awards/awards.py b/invenio_vocabularies/contrib/awards/awards.py index 2cfc6687..fe167f54 100644 --- a/invenio_vocabularies/contrib/awards/awards.py +++ b/invenio_vocabularies/contrib/awards/awards.py @@ -47,7 +47,7 @@ model_cls_attrs={ # cannot set to nullable=False because it would fail at # service level when create({}), see records-resources. - "pid": db.Column(db.String, unique=True), + "pid": db.Column(db.String(255), unique=True), }, record_dumper=SearchDumper( model_fields={"pid": ("id", str)}, diff --git a/invenio_vocabularies/contrib/funders/funders.py b/invenio_vocabularies/contrib/funders/funders.py index 81e9e017..3a33ae4a 100644 --- a/invenio_vocabularies/contrib/funders/funders.py +++ b/invenio_vocabularies/contrib/funders/funders.py @@ -35,7 +35,7 @@ model_cls_attrs={ # cannot set to nullable=False because it would fail at # service level when create({}), see records-resources. - "pid": db.Column(db.String, unique=True), + "pid": db.Column(db.String(255), unique=True), }, record_dumper=SearchDumper( model_fields={"pid": ("id", str)}, diff --git a/invenio_vocabularies/records/models.py b/invenio_vocabularies/records/models.py index 20a83a22..eb3db758 100644 --- a/invenio_vocabularies/records/models.py +++ b/invenio_vocabularies/records/models.py @@ -17,8 +17,8 @@ class VocabularyType(db.Model): __tablename__ = "vocabularies_types" - id = db.Column(db.String, primary_key=True) - pid_type = db.Column(db.String, unique=True) + id = db.Column(db.String(255), primary_key=True) + pid_type = db.Column(db.String(255), unique=True) @classmethod def create(cls, **data): @@ -67,11 +67,11 @@ class VocabularyScheme(db.Model): __tablename__ = "vocabularies_schemes" - id = db.Column(db.String, primary_key=True) + id = db.Column(db.String(255), primary_key=True) # This is e.g. `subjects`, 'affiliations', ... - parent_id = db.Column(db.String, primary_key=True) - name = db.Column(db.String) - uri = db.Column(db.String) + parent_id = db.Column(db.String(255), primary_key=True) + name = db.Column(db.String(255)) + uri = db.Column(db.String(255)) # Any extra metadata is added as columns. @classmethod diff --git a/tests/test_alembic.py b/tests/test_alembic.py index 80cc2511..4d23d196 100644 --- a/tests/test_alembic.py +++ b/tests/test_alembic.py @@ -32,7 +32,7 @@ def test_alembic(app, database): db = database ext = app.extensions["invenio-db"] - if db.engine.name == "sqlite": + if db.engine.name in ["sqlite", "mysql"]: raise pytest.skip("Upgrades are not supported on SQLite.") # Check that this package's SQLAlchemy models have been properly registered