Skip to content
Snippets Groups Projects
Commit 9e6de316 authored by Tucker Gary Siegel's avatar Tucker Gary Siegel
Browse files

migrate user to common package to allow sharing across services

parent d3bcaa29
No related branches found
No related tags found
No related merge requests found
package edu.umd.dawn.common.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Field;
/**
* Location entity
*/
@Data
@Builder
@Deprecated
public class Location {
@Field("id")
@NotEmpty
private String id;
@NotNull
private Double latitude;
@NotNull
private Double longitude;
@NotEmpty
private String address;
@Field("display_name")
@JsonProperty("display_name")
private String displayName;
}
package edu.umd.dawn.common.entities;
import edu.umd.dawn.common.exceptions.DawnException;
import edu.umd.dawn.common.exceptions.DawnExceptionParameters;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.data.mongodb.core.mapping.FieldType;
/**
* User entity - shared across all services
*/
@Data
@Document("users")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User {
@Id
@Field(targetType = FieldType.STRING)
private String id;
private String name;
private String email;
private String salt;
private byte[] hash;
private String hashVersion;
private Integer role;
@Field("newsletter_opt_in")
private Boolean newsletterOptIn;
@Field("last_logged_in")
private LocalDateTime lastLoggedIn;
@Field("last_token_refresh")
private LocalDateTime lastTokenRefresh;
@Field("created_at")
private LocalDateTime createdAt;
@Field("default_location")
@Deprecated
private Location defaultLocation;
@Field("favorite_locations")
@Deprecated
private List<Location> favoriteLocations;
@Field("locations")
private List<String> locations;
@Field("default_location_v2")
private String defaultLocationV2;
private Set<String> migrations;
public void addLocation(String locationId) {
List<String> aList = new ArrayList<>(locations);
aList.add(locationId);
setLocations(aList);
}
/**
* Will throw if id does not exist
* @param id
*/
public String removeFavoriteLocation(String id) {
List<String> newList =
locations.stream().filter(location -> !location.equals(id)).collect(Collectors.toList());
if (newList.size() == locations.size()) {
throw new DawnException(new DawnExceptionParameters(400, "BAD_REQUEST", "location id provided does not exist", ""));
}
setLocations(newList);
return id;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment