diff --git a/pom.xml b/pom.xml
index cd90c68..effdc0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,12 +49,12 @@
runtime
true
-
+
org.postgresql
postgresql
diff --git a/src/main/java/group/goforward/ballistic/controllers/PsaController.java b/src/main/java/group/goforward/ballistic/controllers/PsaController.java
new file mode 100644
index 0000000..5d147f2
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/controllers/PsaController.java
@@ -0,0 +1,57 @@
+package group.goforward.ballistic.controllers;
+
+import group.goforward.ballistic.jpa.Psa;
+import group.goforward.ballistic.service.PsaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/psa")
+public class PsaController {
+
+ private final PsaService psaService;
+
+ @Autowired
+ public PsaController(PsaService psaService) {
+ this.psaService = psaService;
+ }
+
+ @GetMapping("/all")
+ public List getAllPsa() {
+ return psaService.findAll();
+ }
+
+ @GetMapping("/{id}")
+ public ResponseEntity getPsaById(@PathVariable UUID id) {
+ Optional psa = psaService.findById(id);
+ return psa.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
+ }
+
+ @PostMapping
+ public Psa createPsa(@RequestBody Psa psa) {
+ return psaService.save(psa);
+ }
+
+ @PutMapping("/{id}")
+ public ResponseEntity updatePsa(@PathVariable UUID id, @RequestBody Psa psaDetails) {
+ Optional psa = psaService.findById(id);
+ if (psa.isPresent()) {
+ Psa updatedPsa = psa.get();
+ // Update fields of the Psa entity as needed
+ return ResponseEntity.ok(psaService.save(updatedPsa));
+ } else {
+ return ResponseEntity.notFound().build();
+ }
+ }
+
+ @DeleteMapping("/{id}")
+ public ResponseEntity deletePsa(@PathVariable UUID id) {
+ psaService.deleteById(id);
+ return ResponseEntity.noContent().build();
+ }
+}
diff --git a/src/main/java/group/goforward/ballistic/jpa/Account.java b/src/main/java/group/goforward/ballistic/jpa/Account.java
new file mode 100644
index 0000000..09fe41e
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Account.java
@@ -0,0 +1,160 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.util.UUID;
+
+@Entity
+@Table(name = "accounts")
+public class Account {
+ @Id
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "id", nullable = false)
+ private UUID id;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ @Column(name = "user_id", nullable = false)
+ private UUID userId;
+
+ @Column(name = "type", nullable = false, length = Integer.MAX_VALUE)
+ private String type;
+
+ @Column(name = "provider", nullable = false, length = Integer.MAX_VALUE)
+ private String provider;
+
+ @Column(name = "provider_account_id", nullable = false, length = Integer.MAX_VALUE)
+ private String providerAccountId;
+
+ @Column(name = "refresh_token", length = Integer.MAX_VALUE)
+ private String refreshToken;
+
+ @Column(name = "access_token", length = Integer.MAX_VALUE)
+ private String accessToken;
+
+ @Column(name = "expires_at")
+ private Integer expiresAt;
+
+ @Column(name = "token_type", length = Integer.MAX_VALUE)
+ private String tokenType;
+
+ @Column(name = "id_token", length = Integer.MAX_VALUE)
+ private String idToken;
+
+ @Column(name = "session_state", length = Integer.MAX_VALUE)
+ private String sessionState;
+
+ @Column(name = "scope", length = Integer.MAX_VALUE)
+ private String scope;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+ public UUID getUserId() {
+ return userId;
+ }
+
+ public void setUserId(UUID userId) {
+ this.userId = userId;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getProvider() {
+ return provider;
+ }
+
+ public void setProvider(String provider) {
+ this.provider = provider;
+ }
+
+ public String getProviderAccountId() {
+ return providerAccountId;
+ }
+
+ public void setProviderAccountId(String providerAccountId) {
+ this.providerAccountId = providerAccountId;
+ }
+
+ public String getRefreshToken() {
+ return refreshToken;
+ }
+
+ public void setRefreshToken(String refreshToken) {
+ this.refreshToken = refreshToken;
+ }
+
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ public void setAccessToken(String accessToken) {
+ this.accessToken = accessToken;
+ }
+
+ public Integer getExpiresAt() {
+ return expiresAt;
+ }
+
+ public void setExpiresAt(Integer expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ public String getTokenType() {
+ return tokenType;
+ }
+
+ public void setTokenType(String tokenType) {
+ this.tokenType = tokenType;
+ }
+
+ public String getIdToken() {
+ return idToken;
+ }
+
+ public void setIdToken(String idToken) {
+ this.idToken = idToken;
+ }
+
+ public String getSessionState() {
+ return sessionState;
+ }
+
+ public void setSessionState(String sessionState) {
+ this.sessionState = sessionState;
+ }
+
+ public String getScope() {
+ return scope;
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/AccountRepository.java b/src/main/java/group/goforward/ballistic/jpa/AccountRepository.java
new file mode 100644
index 0000000..395b87c
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/AccountRepository.java
@@ -0,0 +1,8 @@
+package group.goforward.ballistic.jpa;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.UUID;
+
+public interface AccountRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/AeroPrecision.java b/src/main/java/group/goforward/ballistic/jpa/AeroPrecision.java
new file mode 100644
index 0000000..b2007fa
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/AeroPrecision.java
@@ -0,0 +1,293 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.math.BigDecimal;
+import java.util.UUID;
+
+@Entity
+@Table(name = "aero_precision")
+public class
+AeroPrecision {
+ @Id
+ @Column(name = "sku", nullable = false, length = Integer.MAX_VALUE)
+ private String sku;
+
+ @Column(name = "manufacturer_id", length = Integer.MAX_VALUE)
+ private String manufacturerId;
+
+ @Column(name = "brand_name", length = Integer.MAX_VALUE)
+ private String brandName;
+
+ @Column(name = "product_name", length = Integer.MAX_VALUE)
+ private String productName;
+
+ @Column(name = "long_description", length = Integer.MAX_VALUE)
+ private String longDescription;
+
+ @Column(name = "short_description", length = Integer.MAX_VALUE)
+ private String shortDescription;
+
+ @Column(name = "department", length = Integer.MAX_VALUE)
+ private String department;
+
+ @Column(name = "category", length = Integer.MAX_VALUE)
+ private String category;
+
+ @Column(name = "subcategory", length = Integer.MAX_VALUE)
+ private String subcategory;
+
+ @Column(name = "thumb_url", length = Integer.MAX_VALUE)
+ private String thumbUrl;
+
+ @Column(name = "image_url", length = Integer.MAX_VALUE)
+ private String imageUrl;
+
+ @Column(name = "buy_link", length = Integer.MAX_VALUE)
+ private String buyLink;
+
+ @Column(name = "keywords", length = Integer.MAX_VALUE)
+ private String keywords;
+
+ @Column(name = "reviews", length = Integer.MAX_VALUE)
+ private String reviews;
+
+ @Column(name = "retail_price")
+ private BigDecimal retailPrice;
+
+ @Column(name = "sale_price")
+ private BigDecimal salePrice;
+
+ @Column(name = "brand_page_link", length = Integer.MAX_VALUE)
+ private String brandPageLink;
+
+ @Column(name = "brand_logo_image", length = Integer.MAX_VALUE)
+ private String brandLogoImage;
+
+ @Column(name = "product_page_view_tracking", length = Integer.MAX_VALUE)
+ private String productPageViewTracking;
+
+ @Column(name = "variants_xml", length = Integer.MAX_VALUE)
+ private String variantsXml;
+
+ @Column(name = "medium_image_url", length = Integer.MAX_VALUE)
+ private String mediumImageUrl;
+
+ @Column(name = "product_content_widget", length = Integer.MAX_VALUE)
+ private String productContentWidget;
+
+ @Column(name = "google_categorization", length = Integer.MAX_VALUE)
+ private String googleCategorization;
+
+ @Column(name = "item_based_commission", length = Integer.MAX_VALUE)
+ private String itemBasedCommission;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public String getSku() {
+ return sku;
+ }
+
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+
+ public String getManufacturerId() {
+ return manufacturerId;
+ }
+
+ public void setManufacturerId(String manufacturerId) {
+ this.manufacturerId = manufacturerId;
+ }
+
+ public String getBrandName() {
+ return brandName;
+ }
+
+ public void setBrandName(String brandName) {
+ this.brandName = brandName;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getLongDescription() {
+ return longDescription;
+ }
+
+ public void setLongDescription(String longDescription) {
+ this.longDescription = longDescription;
+ }
+
+ public String getShortDescription() {
+ return shortDescription;
+ }
+
+ public void setShortDescription(String shortDescription) {
+ this.shortDescription = shortDescription;
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getSubcategory() {
+ return subcategory;
+ }
+
+ public void setSubcategory(String subcategory) {
+ this.subcategory = subcategory;
+ }
+
+ public String getThumbUrl() {
+ return thumbUrl;
+ }
+
+ public void setThumbUrl(String thumbUrl) {
+ this.thumbUrl = thumbUrl;
+ }
+
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+
+ public String getBuyLink() {
+ return buyLink;
+ }
+
+ public void setBuyLink(String buyLink) {
+ this.buyLink = buyLink;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords;
+ }
+
+ public String getReviews() {
+ return reviews;
+ }
+
+ public void setReviews(String reviews) {
+ this.reviews = reviews;
+ }
+
+ public BigDecimal getRetailPrice() {
+ return retailPrice;
+ }
+
+ public void setRetailPrice(BigDecimal retailPrice) {
+ this.retailPrice = retailPrice;
+ }
+
+ public BigDecimal getSalePrice() {
+ return salePrice;
+ }
+
+ public void setSalePrice(BigDecimal salePrice) {
+ this.salePrice = salePrice;
+ }
+
+ public String getBrandPageLink() {
+ return brandPageLink;
+ }
+
+ public void setBrandPageLink(String brandPageLink) {
+ this.brandPageLink = brandPageLink;
+ }
+
+ public String getBrandLogoImage() {
+ return brandLogoImage;
+ }
+
+ public void setBrandLogoImage(String brandLogoImage) {
+ this.brandLogoImage = brandLogoImage;
+ }
+
+ public String getProductPageViewTracking() {
+ return productPageViewTracking;
+ }
+
+ public void setProductPageViewTracking(String productPageViewTracking) {
+ this.productPageViewTracking = productPageViewTracking;
+ }
+
+ public String getVariantsXml() {
+ return variantsXml;
+ }
+
+ public void setVariantsXml(String variantsXml) {
+ this.variantsXml = variantsXml;
+ }
+
+ public String getMediumImageUrl() {
+ return mediumImageUrl;
+ }
+
+ public void setMediumImageUrl(String mediumImageUrl) {
+ this.mediumImageUrl = mediumImageUrl;
+ }
+
+ public String getProductContentWidget() {
+ return productContentWidget;
+ }
+
+ public void setProductContentWidget(String productContentWidget) {
+ this.productContentWidget = productContentWidget;
+ }
+
+ public String getGoogleCategorization() {
+ return googleCategorization;
+ }
+
+ public void setGoogleCategorization(String googleCategorization) {
+ this.googleCategorization = googleCategorization;
+ }
+
+ public String getItemBasedCommission() {
+ return itemBasedCommission;
+ }
+
+ public void setItemBasedCommission(String itemBasedCommission) {
+ this.itemBasedCommission = itemBasedCommission;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Authenticator.java b/src/main/java/group/goforward/ballistic/jpa/Authenticator.java
new file mode 100644
index 0000000..8f6fb5f
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Authenticator.java
@@ -0,0 +1,88 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "authenticator")
+public class Authenticator {
+ @EmbeddedId
+ private AuthenticatorId id;
+
+ @Column(name = "\"providerAccountId\"", nullable = false, length = Integer.MAX_VALUE)
+ private String providerAccountId;
+
+ @Column(name = "\"credentialPublicKey\"", nullable = false, length = Integer.MAX_VALUE)
+ private String credentialPublicKey;
+
+ @Column(name = "counter", nullable = false)
+ private Integer counter;
+
+ @Column(name = "\"credentialDeviceType\"", nullable = false, length = Integer.MAX_VALUE)
+ private String credentialDeviceType;
+
+ @Column(name = "\"credentialBackedUp\"", nullable = false)
+ private Boolean credentialBackedUp = false;
+
+ @Column(name = "transports", length = Integer.MAX_VALUE)
+ private String transports;
+
+ public AuthenticatorId getId() {
+ return id;
+ }
+
+ public void setId(AuthenticatorId id) {
+ this.id = id;
+ }
+
+ public String getProviderAccountId() {
+ return providerAccountId;
+ }
+
+ public void setProviderAccountId(String providerAccountId) {
+ this.providerAccountId = providerAccountId;
+ }
+
+ public String getCredentialPublicKey() {
+ return credentialPublicKey;
+ }
+
+ public void setCredentialPublicKey(String credentialPublicKey) {
+ this.credentialPublicKey = credentialPublicKey;
+ }
+
+ public Integer getCounter() {
+ return counter;
+ }
+
+ public void setCounter(Integer counter) {
+ this.counter = counter;
+ }
+
+ public String getCredentialDeviceType() {
+ return credentialDeviceType;
+ }
+
+ public void setCredentialDeviceType(String credentialDeviceType) {
+ this.credentialDeviceType = credentialDeviceType;
+ }
+
+ public Boolean getCredentialBackedUp() {
+ return credentialBackedUp;
+ }
+
+ public void setCredentialBackedUp(Boolean credentialBackedUp) {
+ this.credentialBackedUp = credentialBackedUp;
+ }
+
+ public String getTransports() {
+ return transports;
+ }
+
+ public void setTransports(String transports) {
+ this.transports = transports;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/AuthenticatorId.java b/src/main/java/group/goforward/ballistic/jpa/AuthenticatorId.java
new file mode 100644
index 0000000..6863797
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/AuthenticatorId.java
@@ -0,0 +1,48 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import org.hibernate.Hibernate;
+
+import java.util.Objects;
+
+@Embeddable
+public class AuthenticatorId implements java.io.Serializable {
+ private static final long serialVersionUID = -4147080603801184737L;
+ @Column(name = "\"credentialId\"", nullable = false, length = Integer.MAX_VALUE)
+ private String credentialId;
+
+ @Column(name = "\"userId\"", nullable = false, length = Integer.MAX_VALUE)
+ private String userId;
+
+ public String getCredentialId() {
+ return credentialId;
+ }
+
+ public void setCredentialId(String credentialId) {
+ this.credentialId = credentialId;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
+ AuthenticatorId entity = (AuthenticatorId) o;
+ return Objects.equals(this.credentialId, entity.credentialId) &&
+ Objects.equals(this.userId, entity.userId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(credentialId, userId);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/BalReseller.java b/src/main/java/group/goforward/ballistic/jpa/BalReseller.java
new file mode 100644
index 0000000..9db8a2f
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/BalReseller.java
@@ -0,0 +1,107 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "bal_resellers")
+public class BalReseller {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @Column(name = "website_url")
+ private String websiteUrl;
+
+ @Column(name = "contact_email", length = 100)
+ private String contactEmail;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getWebsiteUrl() {
+ return websiteUrl;
+ }
+
+ public void setWebsiteUrl(String websiteUrl) {
+ this.websiteUrl = websiteUrl;
+ }
+
+ public String getContactEmail() {
+ return contactEmail;
+ }
+
+ public void setContactEmail(String contactEmail) {
+ this.contactEmail = contactEmail;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/BbProduct.java b/src/main/java/group/goforward/ballistic/jpa/BbProduct.java
new file mode 100644
index 0000000..1ff4246
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/BbProduct.java
@@ -0,0 +1,393 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "bb_products")
+public class BbProduct {
+ @Id
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid", nullable = false)
+ private UUID id;
+
+ @Column(name = "\"UPC\"", length = 100)
+ private String upc;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @Column(name = "\"SKU\"", length = 50)
+ private String sku;
+
+ @Column(name = "\"MANUFACTURER_ID\"", length = 50)
+ private String manufacturerId;
+
+ @Column(name = "\"BRAND_NAME\"", length = 50)
+ private String brandName;
+
+ @Column(name = "\"PRODUCT_NAME\"")
+ private String productName;
+
+ @Column(name = "\"LONG_DESCRIPTION\"", length = Integer.MAX_VALUE)
+ private String longDescription;
+
+ @Column(name = "\"SHORT_DESCRIPTION\"", length = 500)
+ private String shortDescription;
+
+ @Column(name = "\"DEPARTMENT\"", length = 100)
+ private String department;
+
+ @Column(name = "\"CATEGORY\"", length = 100)
+ private String category;
+
+ @Column(name = "\"SUBCATEGORY\"", length = 100)
+ private String subcategory;
+
+ @Column(name = "\"THUMB_URL\"", length = 500)
+ private String thumbUrl;
+
+ @Column(name = "\"IMAGE_URL\"", length = 500)
+ private String imageUrl;
+
+ @Column(name = "\"BUY_LINK\"", length = 500)
+ private String buyLink;
+
+ @Column(name = "\"KEYWORDS\"", length = 500)
+ private String keywords;
+
+ @Column(name = "\"REVIEWS\"", length = 500)
+ private String reviews;
+
+ @Column(name = "\"RETAIL_PRICE\"", length = 50)
+ private String retailPrice;
+
+ @Column(name = "\"SALE_PRICE\"", length = 50)
+ private String salePrice;
+
+ @Column(name = "\"BRAND_PAGE_LINK\"", length = 500)
+ private String brandPageLink;
+
+ @Column(name = "\"BRAND_LOGO_IMAGE\"", length = 500)
+ private String brandLogoImage;
+
+ @Column(name = "\"PRODUCT_PAGE_VIEW_TRACKING\"", length = 500)
+ private String productPageViewTracking;
+
+ @Column(name = "\"PARENT_GROUP_ID\"", length = 200)
+ private String parentGroupId;
+
+ @Column(name = "\"FINELINE\"", length = 200)
+ private String fineline;
+
+ @Column(name = "\"SUPERFINELINE\"", length = 200)
+ private String superfineline;
+
+ @Column(name = "\"MODELNUMBER\"", length = 100)
+ private String modelnumber;
+
+ @Column(name = "\"CALIBER\"", length = 200)
+ private String caliber;
+
+ @Column(name = "\"MEDIUM_IMAGE_URL\"", length = 500)
+ private String mediumImageUrl;
+
+ @Column(name = "\"PRODUCT_CONTENT_WIDGET\"", length = 500)
+ private String productContentWidget;
+
+ @Column(name = "\"GOOGLE_CATEGORIZATION\"", length = 500)
+ private String googleCategorization;
+
+ @Column(name = "\"ITEM_BASED_COMMISSION\"", length = 500)
+ private String itemBasedCommission;
+
+ @Column(name = "\"ITEM_BASED_COMMISSION RATE\"", length = 50)
+ private String itemBasedCommissionRate;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getUpc() {
+ return upc;
+ }
+
+ public void setUpc(String upc) {
+ this.upc = upc;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public String getSku() {
+ return sku;
+ }
+
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+
+ public String getManufacturerId() {
+ return manufacturerId;
+ }
+
+ public void setManufacturerId(String manufacturerId) {
+ this.manufacturerId = manufacturerId;
+ }
+
+ public String getBrandName() {
+ return brandName;
+ }
+
+ public void setBrandName(String brandName) {
+ this.brandName = brandName;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getLongDescription() {
+ return longDescription;
+ }
+
+ public void setLongDescription(String longDescription) {
+ this.longDescription = longDescription;
+ }
+
+ public String getShortDescription() {
+ return shortDescription;
+ }
+
+ public void setShortDescription(String shortDescription) {
+ this.shortDescription = shortDescription;
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getSubcategory() {
+ return subcategory;
+ }
+
+ public void setSubcategory(String subcategory) {
+ this.subcategory = subcategory;
+ }
+
+ public String getThumbUrl() {
+ return thumbUrl;
+ }
+
+ public void setThumbUrl(String thumbUrl) {
+ this.thumbUrl = thumbUrl;
+ }
+
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+
+ public String getBuyLink() {
+ return buyLink;
+ }
+
+ public void setBuyLink(String buyLink) {
+ this.buyLink = buyLink;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords;
+ }
+
+ public String getReviews() {
+ return reviews;
+ }
+
+ public void setReviews(String reviews) {
+ this.reviews = reviews;
+ }
+
+ public String getRetailPrice() {
+ return retailPrice;
+ }
+
+ public void setRetailPrice(String retailPrice) {
+ this.retailPrice = retailPrice;
+ }
+
+ public String getSalePrice() {
+ return salePrice;
+ }
+
+ public void setSalePrice(String salePrice) {
+ this.salePrice = salePrice;
+ }
+
+ public String getBrandPageLink() {
+ return brandPageLink;
+ }
+
+ public void setBrandPageLink(String brandPageLink) {
+ this.brandPageLink = brandPageLink;
+ }
+
+ public String getBrandLogoImage() {
+ return brandLogoImage;
+ }
+
+ public void setBrandLogoImage(String brandLogoImage) {
+ this.brandLogoImage = brandLogoImage;
+ }
+
+ public String getProductPageViewTracking() {
+ return productPageViewTracking;
+ }
+
+ public void setProductPageViewTracking(String productPageViewTracking) {
+ this.productPageViewTracking = productPageViewTracking;
+ }
+
+ public String getParentGroupId() {
+ return parentGroupId;
+ }
+
+ public void setParentGroupId(String parentGroupId) {
+ this.parentGroupId = parentGroupId;
+ }
+
+ public String getFineline() {
+ return fineline;
+ }
+
+ public void setFineline(String fineline) {
+ this.fineline = fineline;
+ }
+
+ public String getSuperfineline() {
+ return superfineline;
+ }
+
+ public void setSuperfineline(String superfineline) {
+ this.superfineline = superfineline;
+ }
+
+ public String getModelnumber() {
+ return modelnumber;
+ }
+
+ public void setModelnumber(String modelnumber) {
+ this.modelnumber = modelnumber;
+ }
+
+ public String getCaliber() {
+ return caliber;
+ }
+
+ public void setCaliber(String caliber) {
+ this.caliber = caliber;
+ }
+
+ public String getMediumImageUrl() {
+ return mediumImageUrl;
+ }
+
+ public void setMediumImageUrl(String mediumImageUrl) {
+ this.mediumImageUrl = mediumImageUrl;
+ }
+
+ public String getProductContentWidget() {
+ return productContentWidget;
+ }
+
+ public void setProductContentWidget(String productContentWidget) {
+ this.productContentWidget = productContentWidget;
+ }
+
+ public String getGoogleCategorization() {
+ return googleCategorization;
+ }
+
+ public void setGoogleCategorization(String googleCategorization) {
+ this.googleCategorization = googleCategorization;
+ }
+
+ public String getItemBasedCommission() {
+ return itemBasedCommission;
+ }
+
+ public void setItemBasedCommission(String itemBasedCommission) {
+ this.itemBasedCommission = itemBasedCommission;
+ }
+
+ public String getItemBasedCommissionRate() {
+ return itemBasedCommissionRate;
+ }
+
+ public void setItemBasedCommissionRate(String itemBasedCommissionRate) {
+ this.itemBasedCommissionRate = itemBasedCommissionRate;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Brand.java b/src/main/java/group/goforward/ballistic/jpa/Brand.java
new file mode 100644
index 0000000..de19eef
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Brand.java
@@ -0,0 +1,85 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "brands")
+public class Brand {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Build.java b/src/main/java/group/goforward/ballistic/jpa/Build.java
new file mode 100644
index 0000000..40daa8e
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Build.java
@@ -0,0 +1,107 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "builds")
+public class Build {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "account_id", nullable = false)
+ private Integer accountId;
+
+ @Column(name = "name", nullable = false)
+ private String name;
+
+ @Column(name = "description", length = Integer.MAX_VALUE)
+ private String description;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getAccountId() {
+ return accountId;
+ }
+
+ public void setAccountId(Integer accountId) {
+ this.accountId = accountId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/BuildsComponent.java b/src/main/java/group/goforward/ballistic/jpa/BuildsComponent.java
new file mode 100644
index 0000000..5d1289b
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/BuildsComponent.java
@@ -0,0 +1,96 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "builds_components")
+public class BuildsComponent {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "build_id", nullable = false)
+ private Integer buildId;
+
+ @Column(name = "product_id", nullable = false)
+ private Integer productId;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getBuildId() {
+ return buildId;
+ }
+
+ public void setBuildId(Integer buildId) {
+ this.buildId = buildId;
+ }
+
+ public Integer getProductId() {
+ return productId;
+ }
+
+ public void setProductId(Integer productId) {
+ this.productId = productId;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Category.java b/src/main/java/group/goforward/ballistic/jpa/Category.java
new file mode 100644
index 0000000..997743e
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Category.java
@@ -0,0 +1,96 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "categories")
+public class Category {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @Column(name = "parent_category_id")
+ private Integer parentCategoryId;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Integer getParentCategoryId() {
+ return parentCategoryId;
+ }
+
+ public void setParentCategoryId(Integer parentCategoryId) {
+ this.parentCategoryId = parentCategoryId;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Compartment.java b/src/main/java/group/goforward/ballistic/jpa/Compartment.java
new file mode 100644
index 0000000..df07503
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Compartment.java
@@ -0,0 +1,85 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "compartment")
+public class Compartment {
+ @Id
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "id", nullable = false)
+ private UUID id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @Column(name = "description", length = 300)
+ private String description;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ public UUID getId() {
+ return id;
+ }
+
+ public void setId(UUID id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/ComponentType.java b/src/main/java/group/goforward/ballistic/jpa/ComponentType.java
new file mode 100644
index 0000000..2f51d54
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/ComponentType.java
@@ -0,0 +1,85 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "component_type")
+public class ComponentType {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/EmailVerificationCode.java b/src/main/java/group/goforward/ballistic/jpa/EmailVerificationCode.java
new file mode 100644
index 0000000..a268564
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/EmailVerificationCode.java
@@ -0,0 +1,71 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.OffsetDateTime;
+
+@Entity
+@Table(name = "email_verification_codes")
+public class EmailVerificationCode {
+ @Id
+ @ColumnDefault("nextval('email_verification_codes_id_seq')")
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "user_id", nullable = false, length = 21)
+ private String userId;
+
+ @Column(name = "email", nullable = false)
+ private String email;
+
+ @Column(name = "code", nullable = false, length = 8)
+ private String code;
+
+ @Column(name = "expires_at", nullable = false)
+ private OffsetDateTime expiresAt;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public OffsetDateTime getExpiresAt() {
+ return expiresAt;
+ }
+
+ public void setExpiresAt(OffsetDateTime expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Lipseycatalog.java b/src/main/java/group/goforward/ballistic/jpa/Lipseycatalog.java
new file mode 100644
index 0000000..abef4b9
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Lipseycatalog.java
@@ -0,0 +1,909 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+
+@Entity
+@Table(name = "lipseycatalog")
+public class Lipseycatalog {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "itemno", nullable = false, length = 20)
+ private String itemno;
+
+ @Column(name = "description1", length = Integer.MAX_VALUE)
+ private String description1;
+
+ @Column(name = "description2", length = Integer.MAX_VALUE)
+ private String description2;
+
+ @Column(name = "upc", length = 20)
+ private String upc;
+
+ @Column(name = "manufacturermodelno", length = 30)
+ private String manufacturermodelno;
+
+ @Column(name = "msrp")
+ private Double msrp;
+
+ @Column(name = "model", length = Integer.MAX_VALUE)
+ private String model;
+
+ @Column(name = "calibergauge", length = Integer.MAX_VALUE)
+ private String calibergauge;
+
+ @Column(name = "manufacturer", length = Integer.MAX_VALUE)
+ private String manufacturer;
+
+ @Column(name = "type", length = Integer.MAX_VALUE)
+ private String type;
+
+ @Column(name = "action", length = Integer.MAX_VALUE)
+ private String action;
+
+ @Column(name = "barrellength", length = Integer.MAX_VALUE)
+ private String barrellength;
+
+ @Column(name = "capacity", length = Integer.MAX_VALUE)
+ private String capacity;
+
+ @Column(name = "finish", length = Integer.MAX_VALUE)
+ private String finish;
+
+ @Column(name = "overalllength", length = Integer.MAX_VALUE)
+ private String overalllength;
+
+ @Column(name = "receiver", length = Integer.MAX_VALUE)
+ private String receiver;
+
+ @Column(name = "safety", length = Integer.MAX_VALUE)
+ private String safety;
+
+ @Column(name = "sights", length = Integer.MAX_VALUE)
+ private String sights;
+
+ @Column(name = "stockframegrips", length = Integer.MAX_VALUE)
+ private String stockframegrips;
+
+ @Column(name = "magazine", length = Integer.MAX_VALUE)
+ private String magazine;
+
+ @Column(name = "weight", length = Integer.MAX_VALUE)
+ private String weight;
+
+ @Column(name = "imagename", length = Integer.MAX_VALUE)
+ private String imagename;
+
+ @Column(name = "chamber", length = Integer.MAX_VALUE)
+ private String chamber;
+
+ @Column(name = "drilledandtapped", length = Integer.MAX_VALUE)
+ private String drilledandtapped;
+
+ @Column(name = "rateoftwist", length = Integer.MAX_VALUE)
+ private String rateoftwist;
+
+ @Column(name = "itemtype", length = Integer.MAX_VALUE)
+ private String itemtype;
+
+ @Column(name = "additionalfeature1", length = Integer.MAX_VALUE)
+ private String additionalfeature1;
+
+ @Column(name = "additionalfeature2", length = Integer.MAX_VALUE)
+ private String additionalfeature2;
+
+ @Column(name = "additionalfeature3", length = Integer.MAX_VALUE)
+ private String additionalfeature3;
+
+ @Column(name = "shippingweight", length = Integer.MAX_VALUE)
+ private String shippingweight;
+
+ @Column(name = "boundbookmanufacturer", length = Integer.MAX_VALUE)
+ private String boundbookmanufacturer;
+
+ @Column(name = "boundbookmodel", length = Integer.MAX_VALUE)
+ private String boundbookmodel;
+
+ @Column(name = "boundbooktype", length = Integer.MAX_VALUE)
+ private String boundbooktype;
+
+ @Column(name = "nfathreadpattern", length = Integer.MAX_VALUE)
+ private String nfathreadpattern;
+
+ @Column(name = "nfaattachmentmethod", length = Integer.MAX_VALUE)
+ private String nfaattachmentmethod;
+
+ @Column(name = "nfabaffletype", length = Integer.MAX_VALUE)
+ private String nfabaffletype;
+
+ @Column(name = "silencercanbedisassembled", length = Integer.MAX_VALUE)
+ private String silencercanbedisassembled;
+
+ @Column(name = "silencerconstructionmaterial", length = Integer.MAX_VALUE)
+ private String silencerconstructionmaterial;
+
+ @Column(name = "nfadbreduction", length = Integer.MAX_VALUE)
+ private String nfadbreduction;
+
+ @Column(name = "silenceroutsidediameter", length = Integer.MAX_VALUE)
+ private String silenceroutsidediameter;
+
+ @Column(name = "\"nfaform3Caliber\"", length = Integer.MAX_VALUE)
+ private String nfaform3Caliber;
+
+ @Column(name = "opticmagnification", length = Integer.MAX_VALUE)
+ private String opticmagnification;
+
+ @Column(name = "maintubesize", length = Integer.MAX_VALUE)
+ private String maintubesize;
+
+ @Column(name = "adjustableobjective", length = Integer.MAX_VALUE)
+ private String adjustableobjective;
+
+ @Column(name = "objectivesize", length = Integer.MAX_VALUE)
+ private String objectivesize;
+
+ @Column(name = "opticadjustments", length = Integer.MAX_VALUE)
+ private String opticadjustments;
+
+ @Column(name = "illuminatedreticle", length = Integer.MAX_VALUE)
+ private String illuminatedreticle;
+
+ @Column(name = "reticle", length = Integer.MAX_VALUE)
+ private String reticle;
+
+ @Column(name = "exclusive", length = Integer.MAX_VALUE)
+ private String exclusive;
+
+ @ColumnDefault("NULL")
+ @Column(name = "quantity", length = 10)
+ private String quantity;
+
+ @Column(name = "allocated", length = Integer.MAX_VALUE)
+ private String allocated;
+
+ @Column(name = "onsale", length = Integer.MAX_VALUE)
+ private String onsale;
+
+ @Column(name = "price")
+ private Double price;
+
+ @Column(name = "currentprice")
+ private Double currentprice;
+
+ @Column(name = "retailmap")
+ private Double retailmap;
+
+ @Column(name = "fflrequired", length = Integer.MAX_VALUE)
+ private String fflrequired;
+
+ @Column(name = "sotrequired", length = Integer.MAX_VALUE)
+ private String sotrequired;
+
+ @Column(name = "exclusivetype", length = Integer.MAX_VALUE)
+ private String exclusivetype;
+
+ @Column(name = "scopecoverincluded", length = Integer.MAX_VALUE)
+ private String scopecoverincluded;
+
+ @Column(name = "special", length = Integer.MAX_VALUE)
+ private String special;
+
+ @Column(name = "sightstype", length = Integer.MAX_VALUE)
+ private String sightstype;
+
+ @Column(name = "\"case\"", length = Integer.MAX_VALUE)
+ private String caseField;
+
+ @Column(name = "choke", length = Integer.MAX_VALUE)
+ private String choke;
+
+ @Column(name = "dbreduction", length = Integer.MAX_VALUE)
+ private String dbreduction;
+
+ @Column(name = "family", length = Integer.MAX_VALUE)
+ private String family;
+
+ @Column(name = "finishtype", length = Integer.MAX_VALUE)
+ private String finishtype;
+
+ @Column(name = "frame", length = Integer.MAX_VALUE)
+ private String frame;
+
+ @Column(name = "griptype", length = 30)
+ private String griptype;
+
+ @Column(name = "handgunslidematerial", length = Integer.MAX_VALUE)
+ private String handgunslidematerial;
+
+ @Column(name = "countryoforigin", length = 4)
+ private String countryoforigin;
+
+ @Column(name = "itemlength", length = Integer.MAX_VALUE)
+ private String itemlength;
+
+ @Column(name = "itemwidth", length = Integer.MAX_VALUE)
+ private String itemwidth;
+
+ @Column(name = "itemheight", length = Integer.MAX_VALUE)
+ private String itemheight;
+
+ @Column(name = "packagelength")
+ private Double packagelength;
+
+ @Column(name = "packagewidth")
+ private Double packagewidth;
+
+ @Column(name = "packageheight")
+ private Double packageheight;
+
+ @Column(name = "itemgroup", length = 40)
+ private String itemgroup;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getItemno() {
+ return itemno;
+ }
+
+ public void setItemno(String itemno) {
+ this.itemno = itemno;
+ }
+
+ public String getDescription1() {
+ return description1;
+ }
+
+ public void setDescription1(String description1) {
+ this.description1 = description1;
+ }
+
+ public String getDescription2() {
+ return description2;
+ }
+
+ public void setDescription2(String description2) {
+ this.description2 = description2;
+ }
+
+ public String getUpc() {
+ return upc;
+ }
+
+ public void setUpc(String upc) {
+ this.upc = upc;
+ }
+
+ public String getManufacturermodelno() {
+ return manufacturermodelno;
+ }
+
+ public void setManufacturermodelno(String manufacturermodelno) {
+ this.manufacturermodelno = manufacturermodelno;
+ }
+
+ public Double getMsrp() {
+ return msrp;
+ }
+
+ public void setMsrp(Double msrp) {
+ this.msrp = msrp;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getCalibergauge() {
+ return calibergauge;
+ }
+
+ public void setCalibergauge(String calibergauge) {
+ this.calibergauge = calibergauge;
+ }
+
+ public String getManufacturer() {
+ return manufacturer;
+ }
+
+ public void setManufacturer(String manufacturer) {
+ this.manufacturer = manufacturer;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getAction() {
+ return action;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+ public String getBarrellength() {
+ return barrellength;
+ }
+
+ public void setBarrellength(String barrellength) {
+ this.barrellength = barrellength;
+ }
+
+ public String getCapacity() {
+ return capacity;
+ }
+
+ public void setCapacity(String capacity) {
+ this.capacity = capacity;
+ }
+
+ public String getFinish() {
+ return finish;
+ }
+
+ public void setFinish(String finish) {
+ this.finish = finish;
+ }
+
+ public String getOveralllength() {
+ return overalllength;
+ }
+
+ public void setOveralllength(String overalllength) {
+ this.overalllength = overalllength;
+ }
+
+ public String getReceiver() {
+ return receiver;
+ }
+
+ public void setReceiver(String receiver) {
+ this.receiver = receiver;
+ }
+
+ public String getSafety() {
+ return safety;
+ }
+
+ public void setSafety(String safety) {
+ this.safety = safety;
+ }
+
+ public String getSights() {
+ return sights;
+ }
+
+ public void setSights(String sights) {
+ this.sights = sights;
+ }
+
+ public String getStockframegrips() {
+ return stockframegrips;
+ }
+
+ public void setStockframegrips(String stockframegrips) {
+ this.stockframegrips = stockframegrips;
+ }
+
+ public String getMagazine() {
+ return magazine;
+ }
+
+ public void setMagazine(String magazine) {
+ this.magazine = magazine;
+ }
+
+ public String getWeight() {
+ return weight;
+ }
+
+ public void setWeight(String weight) {
+ this.weight = weight;
+ }
+
+ public String getImagename() {
+ return imagename;
+ }
+
+ public void setImagename(String imagename) {
+ this.imagename = imagename;
+ }
+
+ public String getChamber() {
+ return chamber;
+ }
+
+ public void setChamber(String chamber) {
+ this.chamber = chamber;
+ }
+
+ public String getDrilledandtapped() {
+ return drilledandtapped;
+ }
+
+ public void setDrilledandtapped(String drilledandtapped) {
+ this.drilledandtapped = drilledandtapped;
+ }
+
+ public String getRateoftwist() {
+ return rateoftwist;
+ }
+
+ public void setRateoftwist(String rateoftwist) {
+ this.rateoftwist = rateoftwist;
+ }
+
+ public String getItemtype() {
+ return itemtype;
+ }
+
+ public void setItemtype(String itemtype) {
+ this.itemtype = itemtype;
+ }
+
+ public String getAdditionalfeature1() {
+ return additionalfeature1;
+ }
+
+ public void setAdditionalfeature1(String additionalfeature1) {
+ this.additionalfeature1 = additionalfeature1;
+ }
+
+ public String getAdditionalfeature2() {
+ return additionalfeature2;
+ }
+
+ public void setAdditionalfeature2(String additionalfeature2) {
+ this.additionalfeature2 = additionalfeature2;
+ }
+
+ public String getAdditionalfeature3() {
+ return additionalfeature3;
+ }
+
+ public void setAdditionalfeature3(String additionalfeature3) {
+ this.additionalfeature3 = additionalfeature3;
+ }
+
+ public String getShippingweight() {
+ return shippingweight;
+ }
+
+ public void setShippingweight(String shippingweight) {
+ this.shippingweight = shippingweight;
+ }
+
+ public String getBoundbookmanufacturer() {
+ return boundbookmanufacturer;
+ }
+
+ public void setBoundbookmanufacturer(String boundbookmanufacturer) {
+ this.boundbookmanufacturer = boundbookmanufacturer;
+ }
+
+ public String getBoundbookmodel() {
+ return boundbookmodel;
+ }
+
+ public void setBoundbookmodel(String boundbookmodel) {
+ this.boundbookmodel = boundbookmodel;
+ }
+
+ public String getBoundbooktype() {
+ return boundbooktype;
+ }
+
+ public void setBoundbooktype(String boundbooktype) {
+ this.boundbooktype = boundbooktype;
+ }
+
+ public String getNfathreadpattern() {
+ return nfathreadpattern;
+ }
+
+ public void setNfathreadpattern(String nfathreadpattern) {
+ this.nfathreadpattern = nfathreadpattern;
+ }
+
+ public String getNfaattachmentmethod() {
+ return nfaattachmentmethod;
+ }
+
+ public void setNfaattachmentmethod(String nfaattachmentmethod) {
+ this.nfaattachmentmethod = nfaattachmentmethod;
+ }
+
+ public String getNfabaffletype() {
+ return nfabaffletype;
+ }
+
+ public void setNfabaffletype(String nfabaffletype) {
+ this.nfabaffletype = nfabaffletype;
+ }
+
+ public String getSilencercanbedisassembled() {
+ return silencercanbedisassembled;
+ }
+
+ public void setSilencercanbedisassembled(String silencercanbedisassembled) {
+ this.silencercanbedisassembled = silencercanbedisassembled;
+ }
+
+ public String getSilencerconstructionmaterial() {
+ return silencerconstructionmaterial;
+ }
+
+ public void setSilencerconstructionmaterial(String silencerconstructionmaterial) {
+ this.silencerconstructionmaterial = silencerconstructionmaterial;
+ }
+
+ public String getNfadbreduction() {
+ return nfadbreduction;
+ }
+
+ public void setNfadbreduction(String nfadbreduction) {
+ this.nfadbreduction = nfadbreduction;
+ }
+
+ public String getSilenceroutsidediameter() {
+ return silenceroutsidediameter;
+ }
+
+ public void setSilenceroutsidediameter(String silenceroutsidediameter) {
+ this.silenceroutsidediameter = silenceroutsidediameter;
+ }
+
+ public String getNfaform3Caliber() {
+ return nfaform3Caliber;
+ }
+
+ public void setNfaform3Caliber(String nfaform3Caliber) {
+ this.nfaform3Caliber = nfaform3Caliber;
+ }
+
+ public String getOpticmagnification() {
+ return opticmagnification;
+ }
+
+ public void setOpticmagnification(String opticmagnification) {
+ this.opticmagnification = opticmagnification;
+ }
+
+ public String getMaintubesize() {
+ return maintubesize;
+ }
+
+ public void setMaintubesize(String maintubesize) {
+ this.maintubesize = maintubesize;
+ }
+
+ public String getAdjustableobjective() {
+ return adjustableobjective;
+ }
+
+ public void setAdjustableobjective(String adjustableobjective) {
+ this.adjustableobjective = adjustableobjective;
+ }
+
+ public String getObjectivesize() {
+ return objectivesize;
+ }
+
+ public void setObjectivesize(String objectivesize) {
+ this.objectivesize = objectivesize;
+ }
+
+ public String getOpticadjustments() {
+ return opticadjustments;
+ }
+
+ public void setOpticadjustments(String opticadjustments) {
+ this.opticadjustments = opticadjustments;
+ }
+
+ public String getIlluminatedreticle() {
+ return illuminatedreticle;
+ }
+
+ public void setIlluminatedreticle(String illuminatedreticle) {
+ this.illuminatedreticle = illuminatedreticle;
+ }
+
+ public String getReticle() {
+ return reticle;
+ }
+
+ public void setReticle(String reticle) {
+ this.reticle = reticle;
+ }
+
+ public String getExclusive() {
+ return exclusive;
+ }
+
+ public void setExclusive(String exclusive) {
+ this.exclusive = exclusive;
+ }
+
+ public String getQuantity() {
+ return quantity;
+ }
+
+ public void setQuantity(String quantity) {
+ this.quantity = quantity;
+ }
+
+ public String getAllocated() {
+ return allocated;
+ }
+
+ public void setAllocated(String allocated) {
+ this.allocated = allocated;
+ }
+
+ public String getOnsale() {
+ return onsale;
+ }
+
+ public void setOnsale(String onsale) {
+ this.onsale = onsale;
+ }
+
+ public Double getPrice() {
+ return price;
+ }
+
+ public void setPrice(Double price) {
+ this.price = price;
+ }
+
+ public Double getCurrentprice() {
+ return currentprice;
+ }
+
+ public void setCurrentprice(Double currentprice) {
+ this.currentprice = currentprice;
+ }
+
+ public Double getRetailmap() {
+ return retailmap;
+ }
+
+ public void setRetailmap(Double retailmap) {
+ this.retailmap = retailmap;
+ }
+
+ public String getFflrequired() {
+ return fflrequired;
+ }
+
+ public void setFflrequired(String fflrequired) {
+ this.fflrequired = fflrequired;
+ }
+
+ public String getSotrequired() {
+ return sotrequired;
+ }
+
+ public void setSotrequired(String sotrequired) {
+ this.sotrequired = sotrequired;
+ }
+
+ public String getExclusivetype() {
+ return exclusivetype;
+ }
+
+ public void setExclusivetype(String exclusivetype) {
+ this.exclusivetype = exclusivetype;
+ }
+
+ public String getScopecoverincluded() {
+ return scopecoverincluded;
+ }
+
+ public void setScopecoverincluded(String scopecoverincluded) {
+ this.scopecoverincluded = scopecoverincluded;
+ }
+
+ public String getSpecial() {
+ return special;
+ }
+
+ public void setSpecial(String special) {
+ this.special = special;
+ }
+
+ public String getSightstype() {
+ return sightstype;
+ }
+
+ public void setSightstype(String sightstype) {
+ this.sightstype = sightstype;
+ }
+
+ public String getCaseField() {
+ return caseField;
+ }
+
+ public void setCaseField(String caseField) {
+ this.caseField = caseField;
+ }
+
+ public String getChoke() {
+ return choke;
+ }
+
+ public void setChoke(String choke) {
+ this.choke = choke;
+ }
+
+ public String getDbreduction() {
+ return dbreduction;
+ }
+
+ public void setDbreduction(String dbreduction) {
+ this.dbreduction = dbreduction;
+ }
+
+ public String getFamily() {
+ return family;
+ }
+
+ public void setFamily(String family) {
+ this.family = family;
+ }
+
+ public String getFinishtype() {
+ return finishtype;
+ }
+
+ public void setFinishtype(String finishtype) {
+ this.finishtype = finishtype;
+ }
+
+ public String getFrame() {
+ return frame;
+ }
+
+ public void setFrame(String frame) {
+ this.frame = frame;
+ }
+
+ public String getGriptype() {
+ return griptype;
+ }
+
+ public void setGriptype(String griptype) {
+ this.griptype = griptype;
+ }
+
+ public String getHandgunslidematerial() {
+ return handgunslidematerial;
+ }
+
+ public void setHandgunslidematerial(String handgunslidematerial) {
+ this.handgunslidematerial = handgunslidematerial;
+ }
+
+ public String getCountryoforigin() {
+ return countryoforigin;
+ }
+
+ public void setCountryoforigin(String countryoforigin) {
+ this.countryoforigin = countryoforigin;
+ }
+
+ public String getItemlength() {
+ return itemlength;
+ }
+
+ public void setItemlength(String itemlength) {
+ this.itemlength = itemlength;
+ }
+
+ public String getItemwidth() {
+ return itemwidth;
+ }
+
+ public void setItemwidth(String itemwidth) {
+ this.itemwidth = itemwidth;
+ }
+
+ public String getItemheight() {
+ return itemheight;
+ }
+
+ public void setItemheight(String itemheight) {
+ this.itemheight = itemheight;
+ }
+
+ public Double getPackagelength() {
+ return packagelength;
+ }
+
+ public void setPackagelength(Double packagelength) {
+ this.packagelength = packagelength;
+ }
+
+ public Double getPackagewidth() {
+ return packagewidth;
+ }
+
+ public void setPackagewidth(Double packagewidth) {
+ this.packagewidth = packagewidth;
+ }
+
+ public Double getPackageheight() {
+ return packageheight;
+ }
+
+ public void setPackageheight(Double packageheight) {
+ this.packageheight = packageheight;
+ }
+
+ public String getItemgroup() {
+ return itemgroup;
+ }
+
+ public void setItemgroup(String itemgroup) {
+ this.itemgroup = itemgroup;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Manufacturer.java b/src/main/java/group/goforward/ballistic/jpa/Manufacturer.java
new file mode 100644
index 0000000..facff3d
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Manufacturer.java
@@ -0,0 +1,85 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "manufacturer")
+public class Manufacturer {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false, length = 100)
+ private String name;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/PasswordResetToken.java b/src/main/java/group/goforward/ballistic/jpa/PasswordResetToken.java
new file mode 100644
index 0000000..0a1da92
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/PasswordResetToken.java
@@ -0,0 +1,47 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+import java.time.OffsetDateTime;
+
+@Entity
+@Table(name = "password_reset_tokens")
+public class PasswordResetToken {
+ @Id
+ @Column(name = "id", nullable = false, length = 40)
+ private String id;
+
+ @Column(name = "user_id", nullable = false, length = 21)
+ private String userId;
+
+ @Column(name = "expires_at", nullable = false)
+ private OffsetDateTime expiresAt;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public OffsetDateTime getExpiresAt() {
+ return expiresAt;
+ }
+
+ public void setExpiresAt(OffsetDateTime expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Post.java b/src/main/java/group/goforward/ballistic/jpa/Post.java
new file mode 100644
index 0000000..67f86e8
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Post.java
@@ -0,0 +1,116 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+
+@Entity
+@Table(name = "posts")
+public class Post {
+ @Id
+ @Column(name = "id", nullable = false, length = 15)
+ private String id;
+
+ @Column(name = "user_id", nullable = false)
+ private String userId;
+
+ @Column(name = "title", nullable = false)
+ private String title;
+
+ @Column(name = "excerpt", nullable = false)
+ private String excerpt;
+
+ @Column(name = "content", nullable = false, length = Integer.MAX_VALUE)
+ private String content;
+
+ @ColumnDefault("'draft'")
+ @Column(name = "status", nullable = false, length = 10)
+ private String status;
+
+ @Column(name = "tags")
+ private String tags;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "updated_at")
+ private Instant updatedAt;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getExcerpt() {
+ return excerpt;
+ }
+
+ public void setExcerpt(String excerpt) {
+ this.excerpt = excerpt;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getTags() {
+ return tags;
+ }
+
+ public void setTags(String tags) {
+ this.tags = tags;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Product.java b/src/main/java/group/goforward/ballistic/jpa/Product.java
new file mode 100644
index 0000000..bc2a9e9
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Product.java
@@ -0,0 +1,129 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.math.BigDecimal;
+import java.time.Instant;
+
+@Entity
+@Table(name = "products")
+public class Product {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "name", nullable = false)
+ private String name;
+
+ @Column(name = "description", nullable = false, length = Integer.MAX_VALUE)
+ private String description;
+
+ @Column(name = "price", nullable = false)
+ private BigDecimal price;
+
+ @Column(name = "reseller_id", nullable = false)
+ private Integer resellerId;
+
+ @Column(name = "category_id", nullable = false)
+ private Integer categoryId;
+
+ @ColumnDefault("0")
+ @Column(name = "stock_qty")
+ private Integer stockQty;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public BigDecimal getPrice() {
+ return price;
+ }
+
+ public void setPrice(BigDecimal price) {
+ this.price = price;
+ }
+
+ public Integer getResellerId() {
+ return resellerId;
+ }
+
+ public void setResellerId(Integer resellerId) {
+ this.resellerId = resellerId;
+ }
+
+ public Integer getCategoryId() {
+ return categoryId;
+ }
+
+ public void setCategoryId(Integer categoryId) {
+ this.categoryId = categoryId;
+ }
+
+ public Integer getStockQty() {
+ return stockQty;
+ }
+
+ public void setStockQty(Integer stockQty) {
+ this.stockQty = stockQty;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/ProductFeed.java b/src/main/java/group/goforward/ballistic/jpa/ProductFeed.java
new file mode 100644
index 0000000..1bbc637
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/ProductFeed.java
@@ -0,0 +1,107 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "product_feeds")
+public class ProductFeed {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "reseller_id", nullable = false)
+ private Integer resellerId;
+
+ @Column(name = "feed_url", nullable = false)
+ private String feedUrl;
+
+ @Column(name = "last_update")
+ private Instant lastUpdate;
+
+ @ColumnDefault("now()")
+ @Column(name = "updated_at", nullable = false)
+ private Instant updatedAt;
+
+ @ColumnDefault("now()")
+ @Column(name = "created_at", nullable = false)
+ private Instant createdAt;
+
+ @Column(name = "deleted_at")
+ private Instant deletedAt;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Integer getResellerId() {
+ return resellerId;
+ }
+
+ public void setResellerId(Integer resellerId) {
+ this.resellerId = resellerId;
+ }
+
+ public String getFeedUrl() {
+ return feedUrl;
+ }
+
+ public void setFeedUrl(String feedUrl) {
+ this.feedUrl = feedUrl;
+ }
+
+ public Instant getLastUpdate() {
+ return lastUpdate;
+ }
+
+ public void setLastUpdate(Instant lastUpdate) {
+ this.lastUpdate = lastUpdate;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getDeletedAt() {
+ return deletedAt;
+ }
+
+ public void setDeletedAt(Instant deletedAt) {
+ this.deletedAt = deletedAt;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Psa.java b/src/main/java/group/goforward/ballistic/jpa/Psa.java
new file mode 100644
index 0000000..f706dc6
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Psa.java
@@ -0,0 +1,359 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.util.UUID;
+
+@Entity
+@Table(name = "psa")
+public class Psa {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "\"SKU\"", length = 50)
+ private String sku;
+
+ @Column(name = "\"MANUFACTURER_ID\"", length = 50)
+ private String manufacturerId;
+
+ @Column(name = "\"BRAND_NAME\"", length = 50)
+ private String brandName;
+
+ @Column(name = "\"PRODUCT_NAME\"")
+ private String productName;
+
+ @Column(name = "\"LONG_DESCRIPTION\"", length = Integer.MAX_VALUE)
+ private String longDescription;
+
+ @Column(name = "\"SHORT_DESCRIPTION\"", length = 50)
+ private String shortDescription;
+
+ @Column(name = "\"DEPARTMENT\"", length = 50)
+ private String department;
+
+ @Column(name = "\"CATEGORY\"", length = 50)
+ private String category;
+
+ @Column(name = "\"SUBCATEGORY\"", length = 50)
+ private String subcategory;
+
+ @Column(name = "\"THUMB_URL\"", length = 50)
+ private String thumbUrl;
+
+ @Column(name = "\"IMAGE_URL\"", length = 50)
+ private String imageUrl;
+
+ @Column(name = "\"BUY_LINK\"", length = 128)
+ private String buyLink;
+
+ @Column(name = "\"KEYWORDS\"", length = 50)
+ private String keywords;
+
+ @Column(name = "\"REVIEWS\"", length = 50)
+ private String reviews;
+
+ @Column(name = "\"RETAIL_PRICE\"")
+ private Float retailPrice;
+
+ @Column(name = "\"SALE_PRICE\"")
+ private Float salePrice;
+
+ @Column(name = "\"BRAND_PAGE_LINK\"", length = 50)
+ private String brandPageLink;
+
+ /* @Column(name = "\"BRAND_LOGO_IMAGE\"", length = 50)
+ private String brandLogoImage;*/
+
+ @Column(name = "\"PRODUCT_PAGE_VIEW_TRACKING\"", length = 256)
+ private String productPageViewTracking;
+
+ @Column(name = "\"PARENT_GROUP_ID\"", length = 50)
+ private String parentGroupId;
+
+ @Column(name = "\"FINELINE\"", length = 50)
+ private String fineline;
+
+ @Column(name = "\"SUPERFINELINE\"", length = 200)
+ private String superfineline;
+
+ @Column(name = "\"MODELNUMBER\"", length = 50)
+ private String modelnumber;
+
+ @Column(name = "\"CALIBER\"", length = 200)
+ private String caliber;
+
+ @Column(name = "\"UPC\"", length = 100)
+ private String upc;
+
+ @Column(name = "\"MEDIUM_IMAGE_URL\"", length = 50)
+ private String mediumImageUrl;
+
+ @Column(name = "\"PRODUCT_CONTENT_WIDGET\"", length = 256)
+ private String productContentWidget;
+
+ @Column(name = "\"GOOGLE_CATEGORIZATION\"", length = 50)
+ private String googleCategorization;
+
+ @Column(name = "\"ITEM_BASED_COMMISSION\"", length = 50)
+ private String itemBasedCommission;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private String uuid;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getSku() {
+ return sku;
+ }
+
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+
+ public String getManufacturerId() {
+ return manufacturerId;
+ }
+
+ public void setManufacturerId(String manufacturerId) {
+ this.manufacturerId = manufacturerId;
+ }
+
+ public String getBrandName() {
+ return brandName;
+ }
+
+ public void setBrandName(String brandName) {
+ this.brandName = brandName;
+ }
+
+ public String getProductName() {
+ return productName;
+ }
+
+ public void setProductName(String productName) {
+ this.productName = productName;
+ }
+
+ public String getLongDescription() {
+ return longDescription;
+ }
+
+ public void setLongDescription(String longDescription) {
+ this.longDescription = longDescription;
+ }
+
+ public String getShortDescription() {
+ return shortDescription;
+ }
+
+ public void setShortDescription(String shortDescription) {
+ this.shortDescription = shortDescription;
+ }
+
+ public String getDepartment() {
+ return department;
+ }
+
+ public void setDepartment(String department) {
+ this.department = department;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
+ public String getSubcategory() {
+ return subcategory;
+ }
+
+ public void setSubcategory(String subcategory) {
+ this.subcategory = subcategory;
+ }
+
+ public String getThumbUrl() {
+ return thumbUrl;
+ }
+
+ public void setThumbUrl(String thumbUrl) {
+ this.thumbUrl = thumbUrl;
+ }
+
+ public String getImageUrl() {
+ return imageUrl;
+ }
+
+ public void setImageUrl(String imageUrl) {
+ this.imageUrl = imageUrl;
+ }
+
+ public String getBuyLink() {
+ return buyLink;
+ }
+
+ public void setBuyLink(String buyLink) {
+ this.buyLink = buyLink;
+ }
+
+ public String getKeywords() {
+ return keywords;
+ }
+
+ public void setKeywords(String keywords) {
+ this.keywords = keywords;
+ }
+
+ public String getReviews() {
+ return reviews;
+ }
+
+ public void setReviews(String reviews) {
+ this.reviews = reviews;
+ }
+
+ public Float getRetailPrice() {
+ return retailPrice;
+ }
+
+ public void setRetailPrice(Float retailPrice) {
+ this.retailPrice = retailPrice;
+ }
+
+ public Float getSalePrice() {
+ return salePrice;
+ }
+
+ public void setSalePrice(Float salePrice) {
+ this.salePrice = salePrice;
+ }
+
+ public String getBrandPageLink() {
+ return brandPageLink;
+ }
+
+ public void setBrandPageLink(String brandPageLink) {
+ this.brandPageLink = brandPageLink;
+ }
+/*
+
+ public String getBrandLogoImage() {
+ return brandLogoImage;
+ }
+
+ public void setBrandLogoImage(String brandLogoImage) {
+ this.brandLogoImage = brandLogoImage;
+ }
+*/
+
+ public String getProductPageViewTracking() {
+ return productPageViewTracking;
+ }
+
+ public void setProductPageViewTracking(String productPageViewTracking) {
+ this.productPageViewTracking = productPageViewTracking;
+ }
+
+ public String getParentGroupId() {
+ return parentGroupId;
+ }
+
+ public void setParentGroupId(String parentGroupId) {
+ this.parentGroupId = parentGroupId;
+ }
+
+ public String getFineline() {
+ return fineline;
+ }
+
+ public void setFineline(String fineline) {
+ this.fineline = fineline;
+ }
+
+ public String getSuperfineline() {
+ return superfineline;
+ }
+
+ public void setSuperfineline(String superfineline) {
+ this.superfineline = superfineline;
+ }
+
+ public String getModelnumber() {
+ return modelnumber;
+ }
+
+ public void setModelnumber(String modelnumber) {
+ this.modelnumber = modelnumber;
+ }
+
+ public String getCaliber() {
+ return caliber;
+ }
+
+ public void setCaliber(String caliber) {
+ this.caliber = caliber;
+ }
+
+ public String getUpc() {
+ return upc;
+ }
+
+ public void setUpc(String upc) {
+ this.upc = upc;
+ }
+
+ public String getMediumImageUrl() {
+ return mediumImageUrl;
+ }
+
+ public void setMediumImageUrl(String mediumImageUrl) {
+ this.mediumImageUrl = mediumImageUrl;
+ }
+
+ public String getProductContentWidget() {
+ return productContentWidget;
+ }
+
+ public void setProductContentWidget(String productContentWidget) {
+ this.productContentWidget = productContentWidget;
+ }
+
+ public String getGoogleCategorization() {
+ return googleCategorization;
+ }
+
+ public void setGoogleCategorization(String googleCategorization) {
+ this.googleCategorization = googleCategorization;
+ }
+
+ public String getItemBasedCommission() {
+ return itemBasedCommission;
+ }
+
+ public void setItemBasedCommission(String itemBasedCommission) {
+ this.itemBasedCommission = itemBasedCommission;
+ }
+
+ public String getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(String uuid) {
+ this.uuid = uuid;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/PsaOld.java b/src/main/java/group/goforward/ballistic/jpa/PsaOld.java
new file mode 100644
index 0000000..c02d5d7
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/PsaOld.java
@@ -0,0 +1,23 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "psa_old")
+public class PsaOld {
+ @Id
+ @Column(name = "\"SKU\"", length = 50)
+ private String sku;
+
+ public String getSku() {
+ return sku;
+ }
+
+ public void setSku(String sku) {
+ this.sku = sku;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/Session.java b/src/main/java/group/goforward/ballistic/jpa/Session.java
new file mode 100644
index 0000000..d2673ae
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/Session.java
@@ -0,0 +1,73 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.time.OffsetDateTime;
+
+@Entity
+@Table(name = "sessions")
+public class Session {
+ @Id
+ @Column(name = "id", nullable = false)
+ private String id;
+
+ @Column(name = "user_id", nullable = false, length = 21)
+ private String userId;
+
+ @Column(name = "expires_at", nullable = false)
+ private OffsetDateTime expiresAt;
+
+ @ColumnDefault("CURRENT_TIMESTAMP")
+ @Column(name = "created_at")
+ private Instant createdAt;
+
+ @ColumnDefault("CURRENT_TIMESTAMP")
+ @Column(name = "updated_at")
+ private Instant updatedAt;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public OffsetDateTime getExpiresAt() {
+ return expiresAt;
+ }
+
+ public void setExpiresAt(OffsetDateTime expiresAt) {
+ this.expiresAt = expiresAt;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/State.java b/src/main/java/group/goforward/ballistic/jpa/State.java
new file mode 100644
index 0000000..c6b2df2
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/State.java
@@ -0,0 +1,45 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+@Entity
+@Table(name = "states")
+public class State {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Integer id;
+
+ @Column(name = "state", length = 50)
+ private String state;
+
+ @Column(name = "abbreviation", length = 50)
+ private String abbreviation;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getAbbreviation() {
+ return abbreviation;
+ }
+
+ public void setAbbreviation(String abbreviation) {
+ this.abbreviation = abbreviation;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/User.java b/src/main/java/group/goforward/ballistic/jpa/User.java
new file mode 100644
index 0000000..501c6fe
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/User.java
@@ -0,0 +1,298 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.util.UUID;
+
+@Entity
+@Table(name = "users")
+public class User {
+ @Id
+ @Column(name = "id", nullable = false, length = 21)
+ private String id;
+
+ @Column(name = "name", length = Integer.MAX_VALUE)
+ private String name;
+
+ @Column(name = "username", length = 50)
+ private String username;
+
+ @Column(name = "email", nullable = false)
+ private String email;
+
+ @Column(name = "first_name", length = 50)
+ private String firstName;
+
+ @Column(name = "last_name", length = 50)
+ private String lastName;
+
+ @Column(name = "full_name", length = 50)
+ private String fullName;
+
+ @Column(name = "profile_picture")
+ private String profilePicture;
+
+ @Column(name = "image", length = Integer.MAX_VALUE)
+ private String image;
+
+ @Column(name = "date_of_birth")
+ private LocalDate dateOfBirth;
+
+ @Column(name = "phone_number", length = 20)
+ private String phoneNumber;
+
+ @ColumnDefault("CURRENT_TIMESTAMP")
+ @Column(name = "created_at")
+ private Instant createdAt;
+
+ @ColumnDefault("CURRENT_TIMESTAMP")
+ @Column(name = "updated_at")
+ private Instant updatedAt;
+
+ @ColumnDefault("false")
+ @Column(name = "is_admin")
+ private Boolean isAdmin;
+
+ @Column(name = "last_login")
+ private Instant lastLogin;
+
+ @ColumnDefault("false")
+ @Column(name = "email_verified", nullable = false)
+ private Boolean emailVerified = false;
+
+ @ColumnDefault("'public'")
+ @Column(name = "build_privacy_setting", length = Integer.MAX_VALUE)
+ private String buildPrivacySetting;
+
+ @ColumnDefault("gen_random_uuid()")
+ @Column(name = "uuid")
+ private UUID uuid;
+
+ @Column(name = "discord_id")
+ private String discordId;
+
+ @Column(name = "hashed_password")
+ private String hashedPassword;
+
+ @Column(name = "avatar")
+ private String avatar;
+
+ @Column(name = "stripe_subscription_id", length = 191)
+ private String stripeSubscriptionId;
+
+ @Column(name = "stripe_price_id", length = 191)
+ private String stripePriceId;
+
+ @Column(name = "stripe_customer_id", length = 191)
+ private String stripeCustomerId;
+
+ @Column(name = "stripe_current_period_end")
+ private Instant stripeCurrentPeriodEnd;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String getProfilePicture() {
+ return profilePicture;
+ }
+
+ public void setProfilePicture(String profilePicture) {
+ this.profilePicture = profilePicture;
+ }
+
+ public String getImage() {
+ return image;
+ }
+
+ public void setImage(String image) {
+ this.image = image;
+ }
+
+ public LocalDate getDateOfBirth() {
+ return dateOfBirth;
+ }
+
+ public void setDateOfBirth(LocalDate dateOfBirth) {
+ this.dateOfBirth = dateOfBirth;
+ }
+
+ public String getPhoneNumber() {
+ return phoneNumber;
+ }
+
+ public void setPhoneNumber(String phoneNumber) {
+ this.phoneNumber = phoneNumber;
+ }
+
+ public Instant getCreatedAt() {
+ return createdAt;
+ }
+
+ public void setCreatedAt(Instant createdAt) {
+ this.createdAt = createdAt;
+ }
+
+ public Instant getUpdatedAt() {
+ return updatedAt;
+ }
+
+ public void setUpdatedAt(Instant updatedAt) {
+ this.updatedAt = updatedAt;
+ }
+
+ public Boolean getIsAdmin() {
+ return isAdmin;
+ }
+
+ public void setIsAdmin(Boolean isAdmin) {
+ this.isAdmin = isAdmin;
+ }
+
+ public Instant getLastLogin() {
+ return lastLogin;
+ }
+
+ public void setLastLogin(Instant lastLogin) {
+ this.lastLogin = lastLogin;
+ }
+
+ public Boolean getEmailVerified() {
+ return emailVerified;
+ }
+
+ public void setEmailVerified(Boolean emailVerified) {
+ this.emailVerified = emailVerified;
+ }
+
+ public String getBuildPrivacySetting() {
+ return buildPrivacySetting;
+ }
+
+ public void setBuildPrivacySetting(String buildPrivacySetting) {
+ this.buildPrivacySetting = buildPrivacySetting;
+ }
+
+ public UUID getUuid() {
+ return uuid;
+ }
+
+ public void setUuid(UUID uuid) {
+ this.uuid = uuid;
+ }
+
+ public String getDiscordId() {
+ return discordId;
+ }
+
+ public void setDiscordId(String discordId) {
+ this.discordId = discordId;
+ }
+
+ public String getHashedPassword() {
+ return hashedPassword;
+ }
+
+ public void setHashedPassword(String hashedPassword) {
+ this.hashedPassword = hashedPassword;
+ }
+
+ public String getAvatar() {
+ return avatar;
+ }
+
+ public void setAvatar(String avatar) {
+ this.avatar = avatar;
+ }
+
+ public String getStripeSubscriptionId() {
+ return stripeSubscriptionId;
+ }
+
+ public void setStripeSubscriptionId(String stripeSubscriptionId) {
+ this.stripeSubscriptionId = stripeSubscriptionId;
+ }
+
+ public String getStripePriceId() {
+ return stripePriceId;
+ }
+
+ public void setStripePriceId(String stripePriceId) {
+ this.stripePriceId = stripePriceId;
+ }
+
+ public String getStripeCustomerId() {
+ return stripeCustomerId;
+ }
+
+ public void setStripeCustomerId(String stripeCustomerId) {
+ this.stripeCustomerId = stripeCustomerId;
+ }
+
+ public Instant getStripeCurrentPeriodEnd() {
+ return stripeCurrentPeriodEnd;
+ }
+
+ public void setStripeCurrentPeriodEnd(Instant stripeCurrentPeriodEnd) {
+ this.stripeCurrentPeriodEnd = stripeCurrentPeriodEnd;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/UserActivityLog.java b/src/main/java/group/goforward/ballistic/jpa/UserActivityLog.java
new file mode 100644
index 0000000..a7431a0
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/UserActivityLog.java
@@ -0,0 +1,60 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import org.hibernate.annotations.ColumnDefault;
+
+import java.time.Instant;
+
+@Entity
+@Table(name = "user_activity_log")
+public class UserActivityLog {
+ @Id
+ @Column(name = "id", nullable = false)
+ private Long id;
+
+ @Column(name = "user_id", nullable = false)
+ private Long userId;
+
+ @Column(name = "activity", nullable = false, length = Integer.MAX_VALUE)
+ private String activity;
+
+ @ColumnDefault("CURRENT_TIMESTAMP")
+ @Column(name = "\"timestamp\"")
+ private Instant timestamp;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Long userId) {
+ this.userId = userId;
+ }
+
+ public String getActivity() {
+ return activity;
+ }
+
+ public void setActivity(String activity) {
+ this.activity = activity;
+ }
+
+ public Instant getTimestamp() {
+ return timestamp;
+ }
+
+ public void setTimestamp(Instant timestamp) {
+ this.timestamp = timestamp;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/jpa/VerificationToken.java b/src/main/java/group/goforward/ballistic/jpa/VerificationToken.java
new file mode 100644
index 0000000..ddfc9d1
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/jpa/VerificationToken.java
@@ -0,0 +1,47 @@
+package group.goforward.ballistic.jpa;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+import java.time.Instant;
+
+@Entity
+@Table(name = "\"verificationTokens\"")
+public class VerificationToken {
+ @Id
+ @Column(name = "identifier", nullable = false, length = Integer.MAX_VALUE)
+ private String identifier;
+
+ @Column(name = "token", nullable = false, length = Integer.MAX_VALUE)
+ private String token;
+
+ @Column(name = "expires", nullable = false)
+ private Instant expires;
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ public void setIdentifier(String identifier) {
+ this.identifier = identifier;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public Instant getExpires() {
+ return expires;
+ }
+
+ public void setExpires(Instant expires) {
+ this.expires = expires;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/repos/PsaRepository.java b/src/main/java/group/goforward/ballistic/repos/PsaRepository.java
new file mode 100644
index 0000000..71316e9
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/repos/PsaRepository.java
@@ -0,0 +1,7 @@
+package group.goforward.ballistic.repos;
+import group.goforward.ballistic.jpa.Psa;
+import org.springframework.data.jpa.repository.JpaRepository;
+import java.util.UUID;
+
+public interface PsaRepository extends JpaRepository {
+}
\ No newline at end of file
diff --git a/src/main/java/group/goforward/ballistic/service/PsaService.java b/src/main/java/group/goforward/ballistic/service/PsaService.java
new file mode 100644
index 0000000..00796a7
--- /dev/null
+++ b/src/main/java/group/goforward/ballistic/service/PsaService.java
@@ -0,0 +1,36 @@
+package group.goforward.ballistic.service;
+import group.goforward.ballistic.jpa.Psa;
+import group.goforward.ballistic.repos.PsaRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
+@Service
+public class PsaService {
+
+ private final PsaRepository psaRepository;
+
+ @Autowired
+ public PsaService(PsaRepository psaRepository) {
+ this.psaRepository = psaRepository;
+ }
+
+ public List findAll() {
+ return psaRepository.findAll();
+ }
+
+ public Optional findById(UUID id) {
+ return psaRepository.findById(id);
+ }
+
+ public Psa save(Psa psa) {
+ return psaRepository.save(psa);
+ }
+
+ public void deleteById(UUID id) {
+ psaRepository.deleteById(id);
+ }
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 307e87e..20acc42 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,11 @@
spring.application.name=ballistic
+# Database connection properties
+spring.datasource.url=jdbc:postgresql://r710.gofwd.group:5433/ballistic
+spring.datasource.username=postgres
+spring.datasource.password=cul8rman
+spring.datasource.driver-class-name=org.postgresql.Driver
+
+# Hibernate properties
+#spring.jpa.hibernate.ddl-auto=update
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect