package app.entities.killfeed; import app.entities.server.ServerDB; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Data; import org.hibernate.annotations.CacheConcurrencyStrategy; import java.sql.ResultSet; import java.sql.SQLException; /* CREATE TABLE user_killfeed ( id bigint(11) NOT NULL, attacker_id int(11) NOT NULL, victim_id int(11) NOT NULL, assister_id int(11) NOT NULL, utime bigint(20) NOT NULL, weapon_name varchar(128) NOT NULL, weapon_id int(11) NOT NULL, weapon_classname varchar(128) NOT NULL, weapon_index int(11) NOT NULL, custom_kill int(11) NOT NULL, crit_type int(11) NOT NULL, server_id varchar(32) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; */ @Data @Entity @Cacheable @org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_ONLY) @Table(schema = "tf2_facti13", name = "user_killfeed") public class KillsInFeed { @Id private Long id; @Column(name = "attacker_id") private Long attacker_id = -1L; @Transient private String attacker_name; @Column(name = "victim_id") private Long victim_id = -1L; @Transient private String victim_name; @Column(name = "assister_id") private Long assister_id = -1L; @Transient private String assister_name; @Column(name = "utime") private long utime; @Column(name = "weapon_name", length = 128) private String weapon_name; @JsonIgnore @Column(name = "weapon_id") private Long weapon_id; @Column(name = "weapon_classname") private String weapon_classname; @JsonIgnore @Column(name = "weapon_index") private Long weapon_index; @JsonIgnore @Column(name = "custom_kill") private Long custom_kill; @JsonIgnore @Column(name = "crit_type") private Long crit_type; @Column(name = "server_id") private String server_id; @JsonIgnore @ManyToOne @JoinColumn(name = "server_id", referencedColumnName = "srv_id", insertable = false, updatable = false) private ServerDB serverDB; @JsonIgnore @ManyToOne @JoinColumn(name = "weapon_id", referencedColumnName = "id", insertable = false, updatable = false) private TF2iDBItem tf2iDBItem; public KillsInFeed(Object obj) { this.attacker_id = (long) ((Object[]) obj)[0]; this.victim_id = (long) ((Object[]) obj)[1]; this.assister_id = (long) ((Object[]) obj)[2]; this.utime = (long) ((Object[]) obj)[3]; this.weapon_name = (String) ((Object[]) obj)[4]; this.server_id = (String) ((Object[]) obj)[5]; this.weapon_classname = (String) ((Object[]) obj)[6]; } public KillsInFeed(ResultSet rs) throws SQLException { assister_id = rs.getLong(1); victim_id = rs.getLong(2); assister_id = rs.getLong(3); utime = rs.getLong(4); weapon_name = rs.getString(5); server_id = rs.getString(6); weapon_classname = rs.getString(7); } public KillsInFeed() { } public String getWeapon_name(){ //obj_sentrygun if (this.weapon_classname.contains("obj_sentrygun")) return "Турель " + (this.weapon_classname.replace("obj_sentrygun", "").isEmpty()?"1":this.weapon_classname.replace("obj_sentrygun", "")) + " уровня"; return this.tf2iDBItem == null ? this.weapon_name : this.tf2iDBItem.getName(); } public String getServerName() { return this.serverDB == null ? "" : this.serverDB.getName(); } }