/*
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);
}
}