Queries.java

package net.metanotion.sqlauthident;

/** <i>This is a SQL query class generated by the SQLC compiler.</i> */
@javax.annotation.Generated("net.metanotion.sqlc.SQLC")  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 createAuthentication(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1, final @javax.inject.Named("username") String _2, final @javax.inject.Named("hash") String _3, final @javax.inject.Named("hmac") String _4) throws Exception {
			try (final java.sql.PreparedStatement _5 = _0.prepareStatement("INSERT INTO PasswordAuthenticationUsers(UserID, UserName) VALUES (?, ?)")) {
			_5.setLong(1, _1);
			_5.setString(2, _2);
			final int _6 = _5.executeUpdate();
			try (final java.sql.PreparedStatement _7 = _0.prepareStatement("INSERT INTO PasswordAuthentication(UserID, SecretHash, HashFunction)\r\n\t\t\tVALUES (?, ?, ?)")) {
			_7.setLong(1, _1);
			_7.setString(2, _3);
			_7.setString(3, _4);
			final int _8 = _7.executeUpdate();
			try (final java.sql.PreparedStatement _9 = _0.prepareStatement("UPDATE PasswordAuthentication \r\n\t\t\tSET SecretHash = ?, HashFunction = ?\r\n\t\t\tWHERE UserID = ?")) {
			_9.setString(1, _3);
			_9.setString(2, _4);
			_9.setLong(3, _1);
			final int _10 = _9.executeUpdate();
			return _10;
}
}
}
	}
	public java.util.List<Long> getUser(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT u.UserID AS uid FROM Users u WHERE u.UserID = ?")) {
			_2.setLong(1, _1);
			try (final java.sql.ResultSet _3 = _2.executeQuery()) {
			final java.util.List<Long> _4 = new java.util.ArrayList<Long>();
		while(_3.next()) {
					_4.add(_3.getLong(1));
		}
			return _4;
}
}
	}
	public long reserveUID(final java.sql.Connection _0) throws Exception {
			try (final java.sql.PreparedStatement _1 = _0.prepareStatement("SELECT nextval('Users_UserID_seq') AS UID")) {
			try (final java.sql.ResultSet _2 = _1.executeQuery()) {
		_2.next();
			return _2.getLong(1);
}
}
	}
	public int deleteAuthentication(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1, final @javax.inject.Named("uname") String _2) throws Exception {
			try (final java.sql.PreparedStatement _3 = _0.prepareStatement("DELETE FROM PasswordAuthenticationUsers WHERE UserID = ? AND Username = ?")) {
			_3.setLong(1, _1);
			_3.setString(2, _2);
			final int _4 = _3.executeUpdate();
			return _4;
}
	}
	public java.util.List<Long> getByUsername(final java.sql.Connection _0, final @javax.inject.Named("uname") String _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT pw.UserID AS uid \r\n\t\t\tFROM PasswordAuthenticationUsers pw \r\n\t\t\tWHERE pw.Username = ?")) {
			_2.setString(1, _1);
			try (final java.sql.ResultSet _3 = _2.executeQuery()) {
			final java.util.List<Long> _4 = new java.util.ArrayList<Long>();
		while(_3.next()) {
					_4.add(_3.getLong(1));
		}
			return _4;
}
}
	}
	public int addAuthentication(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1, final @javax.inject.Named("username") String _2) throws Exception {
			try (final java.sql.PreparedStatement _3 = _0.prepareStatement("INSERT INTO PasswordAuthenticationUsers(UserID, UserName) VALUES (?, ?)")) {
			_3.setLong(1, _1);
			_3.setString(2, _2);
			final int _4 = _3.executeUpdate();
			return _4;
}
	}
	public int addUser(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("INSERT INTO Users(UserID) VALUES (?)")) {
			_2.setLong(1, _1);
			final int _3 = _2.executeUpdate();
			return _3;
}
	}
	public java.util.List<String> userList(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT Username FROM PasswordAuthenticationUsers WHERE UserID = ?")) {
			_2.setLong(1, _1);
			try (final java.sql.ResultSet _3 = _2.executeQuery()) {
			final java.util.List<String> _4 = new java.util.ArrayList<String>();
		while(_3.next()) {
					_4.add(_3.getString(1));
		}
			return _4;
}
}
	}
	public int deleteUser(final java.sql.Connection _0, final @javax.inject.Named("uid") long _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("DELETE FROM Users WHERE UserID = ?")) {
			_2.setLong(1, _1);
			final int _3 = _2.executeUpdate();
			return _3;
}
	}
	public int updateAuthentication(final java.sql.Connection _0, final @javax.inject.Named("uname") String _1, final @javax.inject.Named("hash") String _2, final @javax.inject.Named("hmac") String _3) throws Exception {
			try (final java.sql.PreparedStatement _4 = _0.prepareStatement("UPDATE PasswordAuthentication\r\n\t\t\tSET SecretHash = ?, HashFunction = ?\r\n\t\t\tWHERE UserID IN (SELECT UserID FROM PasswordAuthenticationUsers WHERE Username = ?)")) {
			_4.setString(1, _2);
			_4.setString(2, _3);
			_4.setString(3, _1);
			final int _5 = _4.executeUpdate();
			try (final java.sql.PreparedStatement _6 = _0.prepareStatement("INSERT INTO PasswordAuthentication\r\n\t\t\t(SELECT UserID, ? AS SecretHash, ? AS HashFunction\r\n\t\t\t\tFROM PasswordAuthenticationUsers\r\n\t\t\t\tWHERE Username = ?\r\n\t\t\t\t\tAND NOT EXISTS (SELECT pw.UserID\r\n\t\t\t\t\t\tFROM PasswordAuthentication pw JOIN PasswordAuthenticationUsers pwau\r\n\t\t\t\t\t\t\tON (pw.UserID = pwau.UserID) WHERE pwau.Username = ?))")) {
			_6.setString(1, _2);
			_6.setString(2, _3);
			_6.setString(3, _1);
			_6.setString(4, _1);
			final int _7 = _6.executeUpdate();
			return _7;
}
}
	}
	public java.util.List<net.metanotion.sqlauthident.AuthStruct> getAuthentication(final java.sql.Connection _0, final @javax.inject.Named("uname") String _1) throws Exception {
			try (final java.sql.PreparedStatement _2 = _0.prepareStatement("SELECT\t\tpw.UserID AS uid,\r\n\t\t\t\t\t\tpw.SecretHash AS hash,\r\n\t\t\t\t\t\tpw.HashFunction AS hmac\r\n\t\t\tFROM PasswordAuthentication pw JOIN\r\n\t\t\t\tPasswordAuthenticationUsers pwau\r\n\t\t\t\t\tON (pw.UserID = pwau.UserID)\r\n\t\t\tWHERE pwau.Username = ?")) {
			_2.setString(1, _1);
			try (final java.sql.ResultSet _3 = _2.executeQuery()) {
			final java.util.List<net.metanotion.sqlauthident.AuthStruct> _4 = new java.util.ArrayList<net.metanotion.sqlauthident.AuthStruct>();
		final net.metanotion.util.reflect.GetInitializer<net.metanotion.sqlauthident.AuthStruct> _5 = net.metanotion.util.reflect.ReflectiveFieldInitializer.getInitializer(net.metanotion.sqlauthident.AuthStruct.class, this.types);
		while(_3.next()) {
					final net.metanotion.util.reflect.Initializer<net.metanotion.sqlauthident.AuthStruct> _6 = _5.initializer();
					_6.put("uid", _3.getLong("uid"));
					_6.put("hash", _3.getString("hash"));
					_6.put("hmac", _3.getString("hmac"));
					_4.add(_6.instance());
		}
			return _4;
}
}
	}
}