123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- """migration serpapi_api_key
- Revision ID: de95f5c77138
- Revises: 23db93619b9d
- Create Date: 2024-01-21 12:09:04.651394
- """
- from json import dumps, loads
- import sqlalchemy as sa
- from alembic import context, op
- # revision identifiers, used by Alembic.
- revision = 'de95f5c77138'
- down_revision = '23db93619b9d'
- branch_labels = None
- depends_on = None
- def upgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- """
- 1. select all tool_providers
- 2. insert api_key to tool_provider_configs
- tool_providers
- - id
- - tenant_id
- - tool_name
- - encrypted_credentials
- {"api_key": "$KEY"}
- - created_at
- - updated_at
- tool_builtin_providers
- - id <- tool_providers.id
- - tenant_id <- tool_providers.tenant_id
- - user_id <- tenant_account_joins.account_id (tenant_account_joins.tenant_id = tool_providers.tenant_id and tenant_account_joins.role = 'owner')
- - encrypted_credentials <- tool_providers.encrypted_credentials
- {"serpapi_api_key": "$KEY"}
- - created_at <- tool_providers.created_at
- - updated_at <- tool_providers.updated_at
- """
- # in alembic's offline mode (with --sql option), skip data operations and output comments describing the migration to raw sql
- if context.is_offline_mode():
- print(f" /*{upgrade.__doc__}*/\n")
- return
- # select all tool_providers
- tool_providers = op.get_bind().execute(
- sa.text(
- "SELECT * FROM tool_providers WHERE tool_name = 'serpapi'"
- )
- ).fetchall()
- # insert api_key to tool_provider_configs
- for tool_provider in tool_providers:
- id = tool_provider['id']
- tenant_id = tool_provider['tenant_id']
- encrypted_credentials = tool_provider['encrypted_credentials']
- try:
- credentials = loads(encrypted_credentials)
- api_key = credentials['api_key']
- credentials['serpapi_api_key'] = api_key
- credentials.pop('api_key')
- encrypted_credentials = dumps(credentials)
- except Exception as e:
- print(e)
- continue
- # get user_id
- user_id = op.get_bind().execute(
- sa.text(
- "SELECT account_id FROM tenant_account_joins WHERE tenant_id = :tenant_id AND role = 'owner'"
- ),
- tenant_id=tenant_id
- ).fetchone()['account_id']
- created_at = tool_provider['created_at']
- updated_at = tool_provider['updated_at']
- # insert to tool_builtin_providers
- # check if exists
- exists = op.get_bind().execute(
- sa.text(
- "SELECT * FROM tool_builtin_providers WHERE tenant_id = :tenant_id AND provider = 'google'"
- ),
- tenant_id=tenant_id
- ).fetchone()
- if exists:
- continue
- op.get_bind().execute(
- sa.text(
- "INSERT INTO tool_builtin_providers (id, tenant_id, user_id, provider, encrypted_credentials, created_at, updated_at) VALUES (:id, :tenant_id, :user_id, :provider, :encrypted_credentials, :created_at, :updated_at)"
- ),
- id=id,
- tenant_id=tenant_id,
- user_id=user_id,
- provider='google',
- encrypted_credentials=encrypted_credentials,
- created_at=created_at,
- updated_at=updated_at
- )
-
- # ### end Alembic commands ###
- def downgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- pass
- # ### end Alembic commands ###
|