@Override public List<SchemaField> getSchema(RequestContext context, String tableName) { return metastore.getCollection(context.project, MATERIALIZED_VIEW_PREFIX + tableName); }
@Override public Map<String, List<SchemaField>> getSchemas(RequestContext context, Optional<List<String>> names) { Stream<Map.Entry<String, List<SchemaField>>> views = metastore.getSchemas(context.project, e -> e.startsWith(MATERIALIZED_VIEW_PREFIX)) .entrySet() .stream().filter(e -> e.getKey().startsWith(MATERIALIZED_VIEW_PREFIX)); if (names.isPresent()) { views = views.filter(e -> names.get().contains(e.getKey())); } return views.collect(Collectors.toMap(e -> e.getKey().substring(MATERIALIZED_VIEW_PREFIX.length()), e -> e.getValue())); }
connection.createStatement().execute(query); task = () -> super.onCreateCollection(project, collection, schemaFields); } else { schemaFields.stream() task = () -> super.onCreateCollectionField(project, collection, schemaFields);
@Override public void createProject(String project) { checkProject(project); try (Handle handle = dbi.open()) { try { handle.createStatement("INSERT INTO project (name) VALUES(:name)") .bind("name", project) .execute(); } catch (Exception e) { if (getProjects().contains(project)) { throw new AlreadyExistsException("project", BAD_REQUEST); } } } super.onCreateProject(project); }
super.onCreateCollection(project, collection, schemaFields); return lastFields;
@Override public void deleteProject(String project) { checkProject(project); try (Handle handle = dbi.open()) { handle.createStatement("delete from project where name = :project") .bind("project", project).execute(); } for (String collectionName : getCollectionNames(project)) { String query = format("DROP TABLE %s.\"%s\".\"%s\"", prestoConfig.getColdStorageConnector(), project, collectionName); QueryResult join = new PrestoQueryExecution(defaultSession, query, true).getResult().join(); if (join.isFailed()) { LOGGER.error("Error while deleting table %s.%s : %s", project, collectionName, join.getError().toString()); } } super.onDeleteProject(project); }
@Override public void createProject(String project) { if (config.getExistingProjects().contains(project)) { checkProject(project); try (Handle handle = dbi.open()) { handle.createStatement("INSERT INTO project (name) VALUES(:name)") .bind("name", project) .execute(); } catch (Exception e) { if (getProjects().contains(project)) { throw new RakamException("The project already exists", BAD_REQUEST); } } super.onCreateProject(project); return; } throw new RakamException(NOT_IMPLEMENTED); }