Coverage for mindsdb / migrations / versions / 2022-09-29_cada7d2be947_json_storage.py: 23%
39 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1"""json_storage
3Revision ID: cada7d2be947
4Revises: 3d5e70105df7
5Create Date: 2022-09-29 15:52:32.695026
7"""
8import json
10from alembic import op
11import sqlalchemy as sa
13import mindsdb.interfaces.storage.db as db
14from mindsdb.interfaces.storage.fs import RESOURCE_GROUP
17# revision identifiers, used by Alembic.
18revision = 'cada7d2be947'
19down_revision = '3d5e70105df7'
20branch_labels = None
21depends_on = None
24def upgrade():
25 op.create_table(
26 'json_storage',
27 sa.Column('id', sa.Integer(), nullable=False),
28 sa.Column('resource_group', sa.String(), nullable=True),
29 sa.Column('resource_id', sa.Integer(), nullable=True),
30 sa.Column('name', sa.String(), nullable=True),
31 sa.Column('content', sa.JSON(), nullable=True),
32 sa.Column('company_id', sa.Integer(), nullable=True),
33 sa.PrimaryKeyConstraint('id')
34 )
36 conn = op.get_bind()
37 session = sa.orm.Session(bind=conn)
38 predictors = conn.execute(sa.text('''
39 select id, json_ai from predictor
40 ''')).fetchall()
42 for row in predictors:
43 try:
44 jai = json.loads(row['json_ai'])
45 except Exception:
46 continue
48 if jai is None or len(jai) == 0:
49 continue
51 record = db.JsonStorage(
52 resource_group=RESOURCE_GROUP.PREDICTOR,
53 resource_id=row['id'],
54 name='json_ai',
55 content=jai,
56 company_id=None
57 )
58 session.add(record)
60 session.commit()
62 with op.batch_alter_table('predictor', schema=None) as batch_op:
63 batch_op.drop_column('json_ai')
66def downgrade():
67 with op.batch_alter_table('predictor', schema=None) as batch_op:
68 batch_op.add_column(sa.Column('json_ai', sa.JSON, nullable=True))
70 conn = op.get_bind()
71 session = sa.orm.Session(bind=conn)
72 jsons = conn.execute(sa.text('''
73 select resource_id, name, content
74 from json_storage
75 where resource_group = 'predictor' and name = 'json_ai'
76 ''')).fetchall()
78 for row in jsons:
79 predicrtor_record = (
80 session.query(db.Predictor)
81 .filter_by(company_id=None, id=row['resource_id'])
82 .first()
83 )
84 if predicrtor_record is None:
85 continue
86 predicrtor_record.json_ai = row['content']
88 session.commit()
90 op.drop_table('json_storage')