diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java new file mode 100644 index 0000000..d2cd7bb --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/OutfitController.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.database.controllers; + +import dev.salmonllama.fsbot.database.FSDB; +import dev.salmonllama.fsbot.database.models.OutfitModel; + +import java.sql.ResultSet; +import java.sql.SQLException; + +public class OutfitController { + public static void insert(OutfitModel outfit) { + try { + FSDB.get().insert( + "INSERT INTO outfits('id', 'link') VALUES (?, ?)", + outfit.id, outfit.link + ); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static OutfitModel findById(String id) throws SQLException { + OutfitModel outfit; + try (ResultSet rs = FSDB.get().select("SELECT * FROM outfits WHERE id = ?", id)) { + if (rs.next()) { + outfit = mapObject(rs); + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + } + + private static OutfitModel mapObject(ResultSet rs) throws SQLException { + return new OutfitModel.OutfitBuilder(rs.getString("link"), rs.getString("submitter"), rs.getString("tag")) + .setId(rs.getString("id")) + .setCreated(rs.getTimestamp("created")) + .setUpdated(rs.getTimestamp("updated")) + .setDeleted(rs.getBoolean("deleted")) + .setFeatured(rs.getBoolean("featured")) + .setDisplayCount(rs.getInt("display_count")) + .setDeletionHash(rs.getString("deletion_hash")) + .build(); + } +} diff --git a/src/main/java/dev/salmonllama/fsbot/database/models/OutfitModel.java b/src/main/java/dev/salmonllama/fsbot/database/models/OutfitModel.java new file mode 100644 index 0000000..08bd88d --- /dev/null +++ b/src/main/java/dev/salmonllama/fsbot/database/models/OutfitModel.java @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2020. Aleksei Gryczewski + * All rights reserved. + */ + +package dev.salmonllama.fsbot.database.models; + +import dev.salmonllama.fsbot.database.DatabaseModel; + +import java.sql.Timestamp; + +public class OutfitModel extends DatabaseModel { + public String id = ""; + public String link = ""; + public String submitter = ""; + public String tag = ""; + public Timestamp created = null; + public Timestamp updated = null; + public boolean deleted = false; + public boolean featured = false; + public int displayCount = 0; + public String deletionHash = ""; + + private OutfitModel(OutfitBuilder builder) { + id = builder.id; + link = builder.link; + submitter = builder.submitter; + tag = builder.tag; + created = builder.created; + updated = builder.updated; + deleted = builder.deleted; + deletionHash = builder.deletionHash; + } + + public static String schema() { + return "CREATE TABLE IF NOT EXISTS outfits (" + + "id TEXT, " + + "link TEXT," + + "submitter TEXT," + + "tag TEXT," + + "created TEXT," + + "updated TEXT," + + "deleted TEXT," + + "featured TEXT," + + "display_count INT" + + "deletion_hash TEXT)"; + } + + public static class OutfitBuilder { + public String id = ""; + public final String link; + public final String submitter; + public String tag; + public Timestamp created = null; + public Timestamp updated = null; + public boolean deleted = false; + public boolean featured = false; + public int displayCount = 0; + public String deletionHash = ""; + + public OutfitBuilder(String link, String submitter, String tag) { + this.link = link; + this.submitter = submitter; + this.tag = tag; + } + + public OutfitBuilder setId(String id) { + this.id = id; + return this; + } + + public OutfitBuilder setCreated(Timestamp created) { + this.created = created; + return this; + } + + public OutfitBuilder setUpdated(Timestamp updated) { + this.updated = updated; + return this; + } + + public OutfitBuilder setDeleted(boolean deleted) { + this.deleted = deleted; + return this; + } + + public OutfitBuilder setFeatured(boolean featured) { + this.featured = featured; + return this; + } + + public OutfitBuilder setDisplayCount(int displayCount) { + this.displayCount = displayCount; + return this; + } + + public OutfitBuilder setDeletionHash(String hash) { + this.deletionHash = hash; + return this; + } + + public OutfitModel build() { + return new OutfitModel(this); + } + } +}