Queries.java
package net.metanotion.multitenant.adminapp;
/** <i>This is a SQL query class generated by the SQLC compiler.</i> */
@javax.annotation.Generated("net.metanotion.sqlc.SQLC") public final class Queries {
private final net.metanotion.util.Dictionary<Class,net.metanotion.util.types.Parser> types;
public Queries() { this.types = new net.metanotion.util.types.TypeDictionary(); }
public Queries(net.metanotion.util.Dictionary<Class,net.metanotion.util.types.Parser> types) { this.types = types; }
public int updateTitle(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("uid") long _2, final @javax.inject.Named("title") String _3) throws Exception {
try (final java.sql.PreparedStatement _4 = _0.prepareStatement("UPDATE Tenants SET Title = ? WHERE TenantId = ? AND OwnerId = ?")) {
_4.setString(1, _3);
_4.setLong(2, _1);
_4.setLong(3, _2);
final int _5 = _4.executeUpdate();
return _5;
}
}
public java.util.List<net.metanotion.multitenant.adminapp.InstanceInfo> listInstances(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT DISTINCT t.TenantId AS TenantId,\r\n\t\t\t\tt.InstancePrefix AS InstancePrefix,\r\n\t\t\t\tt.Title AS Title,\r\n\t\t\t\tCASE WHEN t.OwnerId = ? THEN true\r\n\t\t\t\t\tELSE false END AS IsOwner,\r\n\t\t\t\tpau.Username AS Owner,\r\n\t\t\t\tCASE WHEN rt.TenantId IS NULL THEN false\r\n\t\t\t\t\tELSE true END AS Active\r\n\t\t\tFROM Tenants t\r\n\t\t\t\tJOIN TenantAdministrators ta ON (t.TenantId = ta.TenantId)\r\n\t\t\t\tLEFT JOIN RunningTenants rt ON (rt.TenantId = t.TenantId)\r\n\t\t\t\tLEFT JOIN (SELECT UserId, min(Username) AS Username\r\n\t\t\t\t\t\t\tFROM PasswordAuthenticationUsers\r\n\t\t\t\t\t\t\tGROUP BY UserId) pau ON (t.OwnerId = pau.UserId)\r\n\t\t\tWHERE ta.UserID = ?")) {
_2.setLong(1, _1);
_2.setLong(2, _1);
try (final java.sql.ResultSet _3 = _2.executeQuery()) {
final java.util.List<net.metanotion.multitenant.adminapp.InstanceInfo> _4 = new java.util.ArrayList<net.metanotion.multitenant.adminapp.InstanceInfo>();
final net.metanotion.util.reflect.GetInitializer<net.metanotion.multitenant.adminapp.InstanceInfo> _5 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.multitenant.adminapp.InstanceInfo.class, this.types);
while(_3.next()) {
final net.metanotion.util.reflect.Initializer<net.metanotion.multitenant.adminapp.InstanceInfo> _6 = _5.initializer();
_6.put("TenantId", _3.getLong("TenantId"));
_6.put("InstancePrefix", _3.getString("InstancePrefix"));
_6.put("Title", _3.getString("Title"));
_6.put("IsOwner", _3.getBoolean("IsOwner"));
_6.put("Owner", _3.getString("Owner"));
_6.put("Active", _3.getBoolean("Active"));
_4.add(_6.instance());
}
return _4;
}
}
}
public long getOwner(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT OwnerId FROM Tenants WHERE TenantId = ?")) {
_2.setLong(1, _1);
try (final java.sql.ResultSet _3 = _2.executeQuery()) {
_3.next();
return _3.getLong(1);
}
}
}
public int reassignOwner(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("uid") long _2, final @javax.inject.Named("newOwnerEmail") String _3) throws Exception {
try (final java.sql.PreparedStatement _4 = _0.prepareStatement("UPDATE Tenants\r\n\t\t\tSET OwnerID = q.UserID\r\n\t\t\tFROM (SELECT UserID\r\n\t\t\t\t\t\tFROM PasswordAuthenticationUsers\r\n\t\t\t\t\t\tWHERE Username = ? AND UserId <> ?) AS q\r\n\t\t\tWHERE TenantID = ? AND OwnerID = ?")) {
_4.setString(1, _3);
_4.setLong(2, _2);
_4.setLong(3, _1);
_4.setLong(4, _2);
final int _5 = _4.executeUpdate();
return _5;
}
}
public int stopTenant(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("DELETE FROM RunningTenants WHERE TenantId = ?")) {
_2.setLong(1, _1);
final int _3 = _2.executeUpdate();
return _3;
}
}
public String getOwnerEmail(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT Username\r\n\t\t\tFROM PasswordAuthenticationUsers\r\n\t\t\tWHERE UserId = ?\r\n\t\t\tORDER BY Username ASC\r\n\t\t\tLIMIT 1")) {
_2.setLong(1, _1);
try (final java.sql.ResultSet _3 = _2.executeQuery()) {
_3.next();
return _3.getString(1);
}
}
}
public int deleteAdmin(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("adminEmail") String _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("DELETE FROM TenantAdministratorEmails \r\n\t\t\tWHERE TenantID = ? AND Email = ?")) {
_3.setLong(1, _1);
_3.setString(2, _2);
final int _4 = _3.executeUpdate();
return _4;
}
}
public int addAdmin(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("adminEmail") String _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("INSERT INTO TenantAdministratorEmails(TenantID, Email) VALUES (?, ?)")) {
_3.setLong(1, _1);
_3.setString(2, _2);
final int _4 = _3.executeUpdate();
return _4;
}
}
public java.util.List<net.metanotion.multitenant.adminapp.InstanceInfo> getInstance(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1, final @javax.inject.Named("tid") long _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("SELECT DISTINCT t.TenantId AS TenantId,\r\n\t\t\t\tt.InstancePrefix AS InstancePrefix,\r\n\t\t\t\tt.Title AS Title,\r\n\t\t\t\tCASE WHEN t.OwnerId = ? THEN true\r\n\t\t\t\t\tELSE false END AS IsOwner,\r\n\t\t\t\tpau.Username AS Owner,\r\n\t\t\t\tCASE WHEN rt.TenantId IS NULL THEN false\r\n\t\t\t\t\tELSE true END AS Active\r\n\t\t\tFROM Tenants t\r\n\t\t\t\tJOIN TenantAdministrators ta ON (t.TenantId = ta.TenantId)\r\n\t\t\t\tLEFT JOIN RunningTenants rt ON (rt.TenantId = t.TenantId)\r\n\t\t\t\tLEFT JOIN (SELECT UserId, min(Username) AS Username\r\n\t\t\t\t\t\t\tFROM PasswordAuthenticationUsers\r\n\t\t\t\t\t\t\tGROUP BY UserId) pau ON (t.OwnerId = pau.UserId)\r\n\t\t\tWHERE ta.UserID = ? AND t.TenantId = ?")) {
_3.setLong(1, _1);
_3.setLong(2, _1);
_3.setLong(3, _2);
try (final java.sql.ResultSet _4 = _3.executeQuery()) {
final java.util.List<net.metanotion.multitenant.adminapp.InstanceInfo> _5 = new java.util.ArrayList<net.metanotion.multitenant.adminapp.InstanceInfo>();
final net.metanotion.util.reflect.GetInitializer<net.metanotion.multitenant.adminapp.InstanceInfo> _6 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.multitenant.adminapp.InstanceInfo.class, this.types);
while(_4.next()) {
final net.metanotion.util.reflect.Initializer<net.metanotion.multitenant.adminapp.InstanceInfo> _7 = _6.initializer();
_7.put("TenantId", _4.getLong("TenantId"));
_7.put("InstancePrefix", _4.getString("InstancePrefix"));
_7.put("Title", _4.getString("Title"));
_7.put("IsOwner", _4.getBoolean("IsOwner"));
_7.put("Owner", _4.getString("Owner"));
_7.put("Active", _4.getBoolean("Active"));
_5.add(_7.instance());
}
return _5;
}
}
}
public java.util.List<net.metanotion.multitenant.adminapp.AdminAccount> getTenantAdmin(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("email") String _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("SELECT CASE WHEN UserId IS NULL THEN 0\r\n\t\t\t\t\tELSE UserId END AS userId,\r\n\t\t\t\temail,\r\n\t\t\t\tactiveUser,\r\n\t\t\t\troles\r\n\t\t\tFROM TenantUserRoles\r\n\t\t\tWHERE TenantId = ? AND email = ?\r\n\t\t\tORDER BY array_length(Roles, 1) DESC, UserId ASC, Email ASC")) {
_3.setLong(1, _1);
_3.setString(2, _2);
try (final java.sql.ResultSet _4 = _3.executeQuery()) {
final java.util.List<net.metanotion.multitenant.adminapp.AdminAccount> _5 = new java.util.ArrayList<net.metanotion.multitenant.adminapp.AdminAccount>();
final net.metanotion.util.reflect.GetInitializer<net.metanotion.multitenant.adminapp.AdminAccount> _6 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.multitenant.adminapp.AdminAccount.class, this.types);
while(_4.next()) {
final net.metanotion.util.reflect.Initializer<net.metanotion.multitenant.adminapp.AdminAccount> _7 = _6.initializer();
_7.put("userId", _4.getLong("userId"));
_7.put("email", _4.getString("email"));
_7.put("activeUser", _4.getBoolean("activeUser"));
_7.put("roles", net.metanotion.sqlc.setters.GetArray.parse(_4.getArray("roles")));
_5.add(_7.instance());
}
return _5;
}
}
}
public java.util.List<Long> checkAuth(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1, final @javax.inject.Named("tid") long _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("SELECT TenantId\r\n\t\t\tFROM TenantAdministrators\r\n\t\t\tWHERE UserId = ? AND TenantId = ?")) {
_3.setLong(1, _1);
_3.setLong(2, _2);
try (final java.sql.ResultSet _4 = _3.executeQuery()) {
final java.util.List<Long> _5 = new java.util.ArrayList<Long>();
while(_4.next()) {
_5.add(_4.getLong(1));
}
return _5;
}
}
}
public int logEvent(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("uid") long _2, final @javax.inject.Named("username") String _3, final @javax.inject.Named("event") String _4) throws Exception {
try (final java.sql.PreparedStatement _5 = _0.prepareStatement("INSERT INTO TenantLogs (TenantId, UserId, Username, Event) VALUES (?, ?, ?, ?)")) {
_5.setLong(1, _1);
_5.setLong(2, _2);
_5.setString(3, _3);
_5.setString(4, _4);
final int _6 = _5.executeUpdate();
return _6;
}
}
public java.util.List<String> listTenants(final java.sql.Connection _0) throws Exception {
try (final java.sql.PreparedStatement _1 = _0.prepareStatement("SELECT InstancePrefix\r\n\t\t\tFROM Tenants\r\n\t\t\tWHERE TenantId IN (SELECT TenantId FROM RunningTenants)")) {
try (final java.sql.ResultSet _2 = _1.executeQuery()) {
final java.util.List<String> _3 = new java.util.ArrayList<String>();
while(_2.next()) {
_3.add(_2.getString(1));
}
return _3;
}
}
}
public java.util.List<net.metanotion.multitenant.adminapp.LogStruct> tenantLogs(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("startEventId") long _2, final @javax.inject.Named("count") long _3, final @javax.inject.Named("startTime") org.joda.time.ReadableInstant _4, final @javax.inject.Named("endTime") org.joda.time.ReadableInstant _5, final @javax.inject.Named("username") String _6) throws Exception {
try (final java.sql.PreparedStatement _7 = _0.prepareStatement("SELECT tl.TenantID AS TenantId,\r\n\t\t\t\tt.Title AS TenantName,\r\n\t\t\t\ttl.EventId AS EventId,\r\n\t\t\t\tfixtime(tl.EventTime) AS EventTime,\r\n\t\t\t\ttl.UserId AS UserId,\r\n\t\t\t\ttl.Username AS Username,\r\n\t\t\t\ttl.Event AS Event\r\n\t\t\tFROM TenantLogs tl\r\n\t\t\t\tJOIN Tenants t ON (tl.TenantId = t.TenantId)\r\n\t\t\tWHERE tl.TenantId = ?\r\n\t\t\t\tAND ((? = 0) \r\n\t\t\t\t\tOR ((EventTime < (SELECT EventTime FROM TenantLogs WHERE EventId = ?))\r\n\t\t\t\t\t\tOR ((EventTime = (SELECT EventTime FROM TenantLogs WHERE EventId = ?)) \r\n\t\t\t\t\t\t\tAND (EventId <= ?))))\r\n\t\t\t\tAND ((? IS NULL)\r\n\t\t\t\t\tOR (EventTime >= CAST(? AS TIMESTAMP WITH TIME ZONE)))\r\n\t\t\t\tAND ((? IS NULL)\r\n\t\t\t\t\tOR (EventTime <= CAST(? AS TIMESTAMP WITH TIME ZONE)))\r\n\t\t\t\tAND ((? = '')\r\n\t\t\t\t\tOR (Username ILIKE (? || '%')))\r\n\t\t\tORDER BY EventTime DESC, EventId DESC\r\n\t\t\tLIMIT ?")) {
_7.setLong(1, _1);
_7.setLong(2, _2);
_7.setLong(3, _2);
_7.setLong(4, _2);
_7.setLong(5, _2);
_7.setString(6, (_4 == null ? null : _4.toString()));
_7.setString(7, (_4 == null ? null : _4.toString()));
_7.setString(8, (_5 == null ? null : _5.toString()));
_7.setString(9, (_5 == null ? null : _5.toString()));
_7.setString(10, _6);
_7.setString(11, _6);
_7.setLong(12, _3);
try (final java.sql.ResultSet _8 = _7.executeQuery()) {
final java.util.List<net.metanotion.multitenant.adminapp.LogStruct> _9 = new java.util.ArrayList<net.metanotion.multitenant.adminapp.LogStruct>();
final net.metanotion.util.reflect.GetInitializer<net.metanotion.multitenant.adminapp.LogStruct> _10 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.multitenant.adminapp.LogStruct.class, this.types);
while(_8.next()) {
final net.metanotion.util.reflect.Initializer<net.metanotion.multitenant.adminapp.LogStruct> _11 = _10.initializer();
_11.put("TenantId", _8.getLong("TenantId"));
_11.put("TenantName", _8.getString("TenantName"));
_11.put("EventId", _8.getLong("EventId"));
_11.put("EventTime", ((_8.getString("EventTime") == null) ? null : net.metanotion.util.types.ReadableInstantP.PARSER.parseDateTime(_8.getString("EventTime"))));
_11.put("UserId", _8.getLong("UserId"));
_11.put("Username", _8.getString("Username"));
_11.put("Event", _8.getString("Event"));
_9.add(_11.instance());
}
return _9;
}
}
}
public int startTenant(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("INSERT INTO RunningTenants(TenantId) VALUES (?)")) {
_2.setLong(1, _1);
final int _3 = _2.executeUpdate();
return _3;
}
}
public int addTenant(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("uid") long _2, final @javax.inject.Named("title") String _3, final @javax.inject.Named("instPrefix") String _4) throws Exception {
try (final java.sql.PreparedStatement _5 = _0.prepareStatement("INSERT INTO Tenants(TenantId, OwnerId, Title, InstancePrefix) VALUES (?, ?, ?, ?)")) {
_5.setLong(1, _1);
_5.setLong(2, _2);
_5.setString(3, _3);
_5.setString(4, _4);
final int _6 = _5.executeUpdate();
try (final java.sql.PreparedStatement _7 = _0.prepareStatement("INSERT INTO RunningTenants(TenantId) VALUES (?)")) {
_7.setLong(1, _1);
final int _8 = _7.executeUpdate();
return _8;
}
}
}
public Long reserveTenantId(final java.sql.Connection _0) throws Exception {
try (final java.sql.PreparedStatement _1 = _0.prepareStatement("SELECT nextval('Tenants_TenantID_seq') AS TID")) {
try (final java.sql.ResultSet _2 = _1.executeQuery()) {
_2.next();
return _2.getLong(1);
}
}
}
public java.util.List<net.metanotion.multitenant.adminapp.AdminAccount> listTenantAdmins(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT CASE WHEN UserId IS NULL THEN 0\r\n\t\t\t\t\tELSE UserId END AS userId,\r\n\t\t\t\temail,\r\n\t\t\t\tactiveUser,\r\n\t\t\t\troles\r\n\t\t\tFROM TenantUserRoles\r\n\t\t\tWHERE TenantId = ?\r\n\t\t\tORDER BY array_length(Roles, 1) DESC, UserId ASC, Email ASC")) {
_2.setLong(1, _1);
try (final java.sql.ResultSet _3 = _2.executeQuery()) {
final java.util.List<net.metanotion.multitenant.adminapp.AdminAccount> _4 = new java.util.ArrayList<net.metanotion.multitenant.adminapp.AdminAccount>();
final net.metanotion.util.reflect.GetInitializer<net.metanotion.multitenant.adminapp.AdminAccount> _5 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.multitenant.adminapp.AdminAccount.class, this.types);
while(_3.next()) {
final net.metanotion.util.reflect.Initializer<net.metanotion.multitenant.adminapp.AdminAccount> _6 = _5.initializer();
_6.put("userId", _3.getLong("userId"));
_6.put("email", _3.getString("email"));
_6.put("activeUser", _3.getBoolean("activeUser"));
_6.put("roles", net.metanotion.sqlc.setters.GetArray.parse(_3.getArray("roles")));
_4.add(_6.instance());
}
return _4;
}
}
}
public String getPrefix(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1) throws Exception {
try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT InstancePrefix FROM Tenants WHERE TenantId = ?")) {
_2.setLong(1, _1);
try (final java.sql.ResultSet _3 = _2.executeQuery()) {
_3.next();
return _3.getString(1);
}
}
}
public int removeTenant(final java.sql.Connection _0, final @javax.inject.Named("tid") long _1, final @javax.inject.Named("uid") long _2) throws Exception {
try (final java.sql.PreparedStatement _3 = _0.prepareStatement("DELETE FROM Tenants WHERE TenantId = ? AND OwnerId = ?")) {
_3.setLong(1, _1);
_3.setLong(2, _2);
final int _4 = _3.executeUpdate();
return _4;
}
}
}