public CustomDataSourceList listDatabases(String project) { try (Handle handle = dbi.open()) { List<CustomDataSource> customDataSources = handle.createQuery("SELECT schema_name, type, options FROM custom_data_source WHERE project = :project") .bind("project", project) .map((index, r, ctx) -> { JDBCSchemaConfig read = JsonHelper.read(r.getString(3), JDBCSchemaConfig.class); return new CustomDataSource(r.getString(2), r.getString(1), read); }).list(); HashMap<String, RemoteTable> files = new HashMap<>(); handle.createQuery("SELECT table_name, options FROM custom_file_source WHERE project = :project") .bind("project", project) .map((index, r, ctx) -> { files.put(r.getString(1), JsonHelper.read(r.getString(2), RemoteTable.class)); return null; }).list(); return new CustomDataSourceList(customDataSources, files); } }