| 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 ###
 
 
  |