public void createProject(String project, boolean userIdIsNumeric) { storage.createProjectIfNotExists(project, userIdIsNumeric); }
public CompletableFuture<User> getUser(RequestContext context, Object user) { return storage.getUser(context, user); }
public CompletableFuture<Void> batch(String project, List<? extends ISingleUserBatchOperation> batchUserOperations) { return storage.batch(project, batchUserOperations); }
default void applyOperations(String project, List<? extends ISingleUserBatchOperation> req) { for (ISingleUserBatchOperation data : req) { if (data.getSetProperties() != null) { setUserProperties(project, data.getUser(), data.getSetPropertiesOnce()); } if (data.getSetProperties() != null) { setUserPropertiesOnce(project, data.getUser(), data.getSetPropertiesOnce()); } if (data.getUnsetProperties() != null) { unsetProperties(project, data.getUser(), data.getUnsetProperties()); } if (data.getIncrementProperties() != null) { for (Map.Entry<String, Double> entry : data.getIncrementProperties().entrySet()) { incrementProperty(project, data.getUser(), entry.getKey(), entry.getValue()); } } } }
public void incrementProperty(String project, Object user, String property, double value) { storage.incrementProperty(project, user, property, value); }
public List<SchemaField> getMetadata(RequestContext context) { return storage.getMetadata(context); }
public List<Object> batchCreate(RequestContext context, List<User> users) { return storage.batchCreate(context, users); }
public Object create(String project, Object id, ObjectNode properties) { return storage.create(project, id, properties); }
public CompletableFuture<QueryResult> searchUsers(RequestContext context, List<String> columns, Expression filterExpression, List<UserStorage.EventFilter> eventFilter, UserStorage.Sorting sorting, int limit, String offset) { return storage.searchUsers(context, columns, filterExpression, eventFilter, sorting, limit, offset); }
@VisibleForTesting public void dropProject(String project) { storage.dropProjectIfExists(project); }
public void createSegment(RequestContext context, String name, String tableName, Expression filterExpression, List<UserStorage.EventFilter> eventFilter, Duration interval) throws RakamException { if (filterExpression == null && (eventFilter == null || eventFilter.isEmpty())) { throw new RakamException("At least one filter is required.", BAD_REQUEST); } storage.createSegment(context, name, tableName, filterExpression, eventFilter, interval); }
default CompletableFuture<Void> batch(String project, List<? extends ISingleUserBatchOperation> operations) { for (ISingleUserBatchOperation operation : operations) { if (operation.getSetPropertiesOnce() != null) { setUserProperties(project, operation.getUser(), operation.getSetProperties()); } if (operation.getSetPropertiesOnce() != null) { setUserPropertiesOnce(project, operation.getUser(), operation.getSetPropertiesOnce()); } if (operation.getUnsetProperties() != null) { unsetProperties(project, operation.getUser(), operation.getUnsetProperties()); } if (operation.getIncrementProperties() != null) { for (Map.Entry<String, Double> entry : operation.getIncrementProperties().entrySet()) { incrementProperty(project, operation.getUser(), entry.getKey(), entry.getValue()); } } } return CompletableFuture.completedFuture(null); }
@Subscribe public void onCreateProject(SystemEvents.ProjectCreatedEvent event) { FieldType type = configManager.getConfig(event.project, USER_TYPE.name(), FieldType.class); if (type != null) { if (storage.isPresent()) { storage.get().createProjectIfNotExists(event.project, type.isNumeric()); } } } }
@Override public User get() { if (user == null) { String userAttr = event.getAttribute("_user"); if (userAttr != null) { user = userStorage.getUser(new RequestContext(event.project(), null), userAttr).join(); } } return user; } };