示例#1
0
 public static void AddUserToken(string username, string token)
 {
     using (var client = DynamoClient.Create())
     {
         var tableName = ConfigurationManager.AppSettings["DynamoDBUsersTableARN"].Split('/').Last();
         var table     = Table.LoadTable(client, tableName);
         var dbItem    = table.GetItem(username);
         if (dbItem == null)
         {
             // Create a new user object
             dbItem           = new Document();
             dbItem["UserId"] = username;
             dbItem["Tokens"] = new List <string> {
                 token
             };
         }
         else
         {
             // Add token to the array
             var tokens = dbItem["Tokens"].AsArrayOfString().ToList();
             tokens.Add(token);
             dbItem["Tokens"] = tokens.Distinct().ToList();
         }
         table.UpdateItem(dbItem);
     }
 }
示例#2
0
        public static void Save(WatchListItem item)
        {
            using (var client = DynamoClient.Create())
            {
                var tableName = ConfigurationManager.AppSettings["DynamoDBWatchListItemsTableARN"].Split('/').Last();
                var table     = Table.LoadTable(client, tableName);
                var dbItem    = new Document();

                // Key
                dbItem["UserId"] = item.UserId;
                dbItem["ItemId"] = item.Id;

                // Fields to update
                dbItem["Name"]           = item.Name;
                dbItem["SearchText"]     = item.SearchText;
                dbItem["CategoryId"]     = item.CategoryId;
                dbItem["CategoryName"]   = item.CategoryName;
                dbItem["IgnoredItemIds"] = item.IgnoredItemIds.Select(a => a.ToString()).ToArray();
                dbItem["PinnedItemIds"]  = item.PinnedItemIds.Select(a => a.ToString()).ToArray();

                table.UpdateItem(dbItem);

                // TODO: Check to make sure the item is not deleted before updating it.
            }
        }
示例#3
0
        public static WatchListItem[] Get(string username)
        {
            if (username.IsNullOrWhiteSpace())
            {
                return new WatchListItem[] { }
            }
            ;

            using (var client = DynamoClient.Create())
            {
                var tableName = ConfigurationManager.AppSettings["DynamoDBWatchListItemsTableARN"].Split('/').Last();

                var table   = Table.LoadTable(client, tableName);
                var query   = table.Query(username, new QueryFilter());
                var results = query.GetRemaining();

                return(results
                       .Where(a => !a.ContainsKey("IsDeleted") || a["IsDeleted"].AsBoolean() == false)
                       .Select(a => new WatchListItem
                {
                    UserId = a.GetString("UserId"),
                    Id = a.GetGuid("ItemId").Value,
                    Name = a.GetString("Name"),
                    SearchText = a.GetString("SearchText"),
                    CategoryId = a.GetInt("CategoryId"),
                    CategoryName = a.GetString("CategoryName"),
                    IgnoredItemIds = a.GetArrayOfString("IgnoredItemIds").Select(b => b.ToIntOrDefault()).Where(b => b.HasValue).Select(b => b.Value).ToList(),
                    PinnedItemIds = a.GetArrayOfString("PinnedItemIds").Select(b => b.ToIntOrDefault()).Where(b => b.HasValue).Select(b => b.Value).ToList()
                })
                       .ToArray());
            }
        }
示例#4
0
        /// <summary>
        /// Deleting items is performed by setting the IsDeleted property. No records should ever be fully removed.
        /// </summary>
        /// <param name="id">Watch list item ID.</param>
        /// <param name="username"></param>
        public static void Delete(string id, string username)
        {
            using (var client = DynamoClient.Create())
            {
                var tableName = ConfigurationManager.AppSettings["DynamoDBWatchListItemsTableARN"].Split('/').Last();
                var table     = Table.LoadTable(client, tableName);
                var dbItem    = new Document();

                // Key
                dbItem["UserId"] = username;
                dbItem["ItemId"] = id;

                // Fields to update
                dbItem["IsDeleted"] = true;

                table.UpdateItem(dbItem);
            }
        }
示例#5
0
        public static User Get(string username)
        {
            using (var client = DynamoClient.Create())
            {
                var tableName = ConfigurationManager.AppSettings["DynamoDBUsersTableARN"].Split('/').Last();
                var table     = Table.LoadTable(client, tableName);
                var dbItem    = table.GetItem(username);
                if (dbItem == null)
                {
                    return(null);
                }

                return(new User
                {
                    Id = dbItem["UserId"].AsString(),
                    Tokens = dbItem["Tokens"].AsArrayOfString()
                });
            }
        }