Nantes Université

Skip to content
Extraits de code Groupes Projets
Non vérifiée Valider e6475659 rédigé par Féry Mathieu (Mathius)'s avatar Féry Mathieu (Mathius)
Parcourir les fichiers

feat(db): Add StartsWith (And with userName research)

parent 59205ea7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -22,6 +22,7 @@ import fr.univnantes.webandcloud.api.responses.ResponseError;
import fr.univnantes.webandcloud.api.services.DBService;
import fr.univnantes.webandcloud.api.services.TokenService;
import fr.univnantes.webandcloud.api.services.WithCursor;
import fr.univnantes.webandcloud.api.services.db.DBUser;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.ArraySchema;
......@@ -33,7 +34,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
public class Users extends BaseController {
@Autowired
DBService<User> userDB;
DBUser userDB;
@Autowired
DBService<Token> tokenDB;
@Autowired
......@@ -46,7 +47,10 @@ public class Users extends BaseController {
@NonNull
public WithCursor<List<User>> users(
@Parameter(description = "Limit for request", example = "2") @RequestParam @Nullable Integer limit,
@Parameter(description = "Cursor for next entity", example = "CgA=") @RequestParam @Nullable String cursor) {
@Parameter(description = "Cursor for next entity", example = "CgA=") @RequestParam @Nullable String cursor,
@Parameter(description = "userName research", example = "momo54") @RequestParam @Nullable String userName) {
if (userName != null)
return userDB.searchWithUserNameStartsWith(userName);
return userDB.getAll(limit);
}
......
package fr.univnantes.webandcloud.api.services.db;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import fr.univnantes.webandcloud.api.core.User;
import fr.univnantes.webandcloud.api.services.DBService;
import fr.univnantes.webandcloud.api.services.WithCursor;
import fr.univnantes.webandcloud.api.services.db.fields.user.EmailValue;
import fr.univnantes.webandcloud.api.services.db.fields.user.UserNameStartsWith;
@Service
public class DBUser extends DBService<User> {
@Autowired
private EmailValue emailValue;
@Autowired
private UserNameStartsWith userNameStartsWith;
public User searchFirstWithEmail(String email) {
return searchFirstWith(new User(null, null, email, null, null, null, null), emailValue).data;
}
public WithCursor<List<User>> searchWithUserNameStartsWith(String userName) {
return searchWith(new User(null, userName, null, null, null, null, null), userNameStartsWith);
}
}
package fr.univnantes.webandcloud.api.services.db.fields.user;
import org.springframework.stereotype.Service;
import fr.univnantes.webandcloud.api.core.User;
import fr.univnantes.webandcloud.api.services.fields.StartsWithFieldOf;
@Service
public class UserNameStartsWith extends StartsWithFieldOf<User> {
@Override
public String getFieldName() {
return "userName";
}
@Override
public String getValue(User entityUsed) {
return entityUsed.getUserName();
}
}
package fr.univnantes.webandcloud.api.services.fields;
import com.google.cloud.datastore.StringValue;
import com.google.cloud.datastore.StructuredQuery.CompositeFilter;
import com.google.cloud.datastore.StructuredQuery.Filter;
import com.google.cloud.datastore.StructuredQuery.PropertyFilter;
import fr.univnantes.webandcloud.api.core.WithIdentifier;
public abstract class StartsWithFieldOf<EntityUsed extends WithIdentifier> extends FilterFieldOf<EntityUsed> {
public abstract String getValue(EntityUsed entityUsed);
public Filter getFilterRelated(EntityUsed entityUsed) {
return getFilterWithValue(getValue(entityUsed));
}
public Filter getFilterWithValue(String base) {
if (base != null && base.length() > 0)
return CompositeFilter.and(
PropertyFilter.ge(getFieldName(), new StringValue(base)),
PropertyFilter.lt(
getFieldName(),
new StringValue(
String.format("%s%s", base, '\ufffd'))));
else
return PropertyFilter.eq(getFieldName(), base);
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter