Система авторизации устройств пользователя

This commit is contained in:
RoyceDa
2026-02-09 04:13:32 +02:00
parent 7232fcb903
commit 193640f46a
21 changed files with 753 additions and 32 deletions

View File

@@ -1,26 +1,41 @@
package com.rosetta.im.database;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
public class QuerySession<T> implements AutoCloseable {
private Session session;
private Query<T> query;
private final Session session;
private final Query<T> query;
private final Transaction tx;
public QuerySession(Session session, Query<T> query) {
this.session = session;
this.query = query;
this.tx = session.beginTransaction();
}
public Query<T> getQuery() {
return query;
}
@Override
public void close() {
if (session != null && session.isOpen()) {
session.close();
public void commit() {
if (tx != null && tx.isActive()) {
tx.commit();
}
}
}
@Override
public void close() {
try {
if (tx != null && tx.isActive()) {
tx.rollback();
}
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
}

View File

@@ -233,12 +233,18 @@ public abstract class Repository<T> {
* Выполняет запрос с параметрами и возвращает список сущностей
* @param queryString SQL запрос
* @param parameters параметры запроса
* @param noResultType если true, то не указывать тип результата в запросе, используется для запросов типа UPDATE и DELETE
* @return список сущностей
*/
public QuerySession<T> buildQuery(String queryString, HashMap<String, Object> parameters) {
public QuerySession<T> buildQuery(String queryString, HashMap<String, Object> parameters, boolean noResultType) {
Session session = HibernateUtil.openSession();
try {
Query<T> query = session.createQuery(queryString, entityClass);
Query<T> query;
if(noResultType) {
query = session.createQuery(queryString);
} else {
query = session.createQuery(queryString, entityClass);
}
for (var entry : parameters.entrySet()) {
query.setParameter(entry.getKey(), entry.getValue());
}
@@ -248,6 +254,16 @@ public abstract class Repository<T> {
throw e;
}
}
/**
* Выполняет запрос с параметрами и возвращает список сущностей, тип результата указывается автоматически, используется для запросов типа SELECT
* @param queryString SQL запрос
* @param parameters параметры запроса
* @return список сущностей
*/
public QuerySession<T> buildQuery(String queryString, HashMap<String, Object> parameters) {
return buildQuery(queryString, parameters, false);
}
/**
* Подсчет сущностей по набору полей

View File

@@ -28,6 +28,9 @@ public class Buffer extends CreateUpdateEntity {
@Column(name = "destination")
private String to;
@Column(name = "packetId")
private int packetId;
@Column(name = "packet", columnDefinition = "bytea")
private byte[] packet;
@@ -71,4 +74,12 @@ public class Buffer extends CreateUpdateEntity {
public void setTimestamp(Long timestamp) {
this.timestamp = timestamp;
}
public int getPacketId() {
return packetId;
}
public void setPacketId(int packetId) {
this.packetId = packetId;
}
}