public static Session GetLastSession(Account account) { var ids = Config.instance.mainConnection.LoadIdsByConditions( TableSpec.instance, new ComparisonCondition( TableSpec.instance.getColumnSpec(TableSpec.FIELD_ACCOUNTID), ComparisonType.EQUAL, account.id.ToString() ), Diapasone.first, new JoinSpec[0], new SortSpec[] { new SortSpec( TableSpec.instance.getColumnSpec(TableSpec.FIELD_LASTHUMANACTIVITY), false ) } ); if (ids.Count < 1) { throw new NotFoundInDBException(TableSpec.instance.getColumnSpec(TableSpec.FIELD_ACCOUNTID), account.id.ToString()); } return(Session.LoadById(SessionKey.Parse(ids[0]))); }
public static Session create(Account account) { string key = null; Config.Transactional(transaction => { Config.instance.mainConnection.lockTable(transaction, TableSpec.instance); do { key = Util.RandomString(32, Util.RandomSource.LETTERS_DIGITS); } while(Config.instance.mainConnection.LoadByIds(transaction, TableSpec.instance, new List <string>() { key }).Count > 0); Config.instance.mainConnection.insert( transaction, TableSpec.instance, new Dictionary <string, string>() { { TableSpec.FIELD_SESSIONKEY, key }, { TableSpec.FIELD_ACCOUNTID, account.id.ToString() }, { TableSpec.FIELD_LASTACTIVITY, DateTime.Now.ToUTCString() }, { TableSpec.FIELD_LASTHUMANACTIVITY, DateTime.Now.ToUTCString() }, { TableSpec.FIELD_LASTURL, "" }, { TableSpec.FIELD_ISDELETED, "0" }, } ); }); return(Session.LoadById(SessionKey.Parse(key))); }
public static Session LoadByKey(string sessionKey) { Session result = LoadById(SessionKey.Parse(sessionKey)); if (result.isDeleted) { throw new NotFoundInDBException(TableSpec.instance, sessionKey); } return(result); }