code: def setup_db(session, botconfig, confdir):
      
      Base.metadata.create_all(session.connection())
      # If we're creating a fresh db, we don't need to worry about migrations.
      if not session.get_bind().has_table('alembic_version'):
          conf_obj = config.Config()
          conf_obj.set_main_option('bot_config_path', confdir)
          with resources.path('cslbot', botconfig['alembic']['script_location']) as script_location:
              conf_obj.set_main_option('script_location', str(script_location))
              command.stamp(conf_obj, 'head')
  
      # Populate permissions table with owner.
      owner_nick = botconfig['auth']['owner']
      if not session.query(Permissions).filter(Permissions.nick == owner_nick).count():
          session.add(Permissions(nick=owner_nick, role='owner'))
docs: Sets up the database.