/* This file is a part of the SteamWar software. Copyright (C) 2020 SteamWar.de-Serverteam This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.steamwar.sql; import de.steamwar.sql.internal.Field; import de.steamwar.sql.internal.SelectStatement; import de.steamwar.sql.internal.Statement; import de.steamwar.sql.internal.Table; import lombok.AllArgsConstructor; import lombok.Getter; import java.sql.Timestamp; import java.util.List; @AllArgsConstructor public class Event { private static final Table table = new Table<>(Event.class); private static final SelectStatement byId = table.select(Table.PRIMARY); private static final SelectStatement allShort = new SelectStatement<>(table, "SELECT * FROM Event"); private static final Statement create = table.insertFields(true, "eventName", "deadline", "start", "end", "maximumTeamMembers", "publicSchemsOnly", "spectateSystem"); private static final Statement update = table.update(Table.PRIMARY, "eventName", "deadline", "start", "end", "schemType", "maximumTeamMembers", "publicSchemsOnly", "spectateSystem"); private static final Statement delete = table.delete(Table.PRIMARY); public static Event get(int eventID){ return byId.select(eventID); } public static List getAllShort(){ return allShort.listSelect(); } public static Event create(String eventName, Timestamp start, Timestamp end){ return get(create.insertGetKey(eventName, start, start, end, 5, false, false)); } public static void delete(int eventID){ delete.update(eventID); } @Getter @Field(keys = {Table.PRIMARY}, autoincrement = true) private final int eventID; @Getter @Field(keys = {"eventName"}) private String eventName; @Getter @Field private Timestamp deadline; @Getter @Field private Timestamp start; @Getter @Field private Timestamp end; @Getter @Field private int maximumTeamMembers; @Field(nullable = true) private SchematicType schemType; @Field private boolean publicSchemsOnly; @Field private boolean spectateSystem; public boolean publicSchemsOnly() { return publicSchemsOnly; } public boolean spectateSystem(){ return spectateSystem; } public SchematicType getSchematicType() { return schemType; } public void setEventName(String eventName) { this.eventName = eventName; } public void setDeadline(Timestamp deadline) { this.deadline = deadline; } public void setStart(Timestamp start) { this.start = start; } public void setEnd(Timestamp end) { this.end = end; } public void setMaximumTeamMembers(int maximumTeamMembers) { this.maximumTeamMembers = maximumTeamMembers; } public void setPublicSchemsOnly(boolean publicSchemsOnly) { this.publicSchemsOnly = publicSchemsOnly; } public void setSpectateSystem(boolean spectateSystem) { this.spectateSystem = spectateSystem; } public void setSchemType(SchematicType schemType) { this.schemType = schemType; } public void update(){ update.update(eventName, deadline, start, end, schemType, maximumTeamMembers, publicSchemsOnly, spectateSystem, eventID); } }