Commit 1debe12ff4ab9f90964978db6d6421277acb6918

Authored by toan
1 parent 99c770eb84
Exists in master

RM2077: Add new project procees AmazonDynamoDB

Showing 10 changed files with 543 additions and 0 deletions Side-by-side Diff

sources/RoboforkApp.AWS/App.config
  1 +<?xml version="1.0"?>
  2 +<configuration>
  3 + <appSettings>
  4 + <add key="AWSProfileName" value="Development"/>
  5 + <add key="AWSRegion" value="ap-northeast-1" />
  6 + </appSettings>
  7 + <startup>
  8 + <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  9 + </startup>
  10 +</configuration>
sources/RoboforkApp.AWS/Contracts/ITableDataService.cs
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Text;
  5 +using System.Threading.Tasks;
  6 +
  7 +namespace RoboforkApp.AWS.Contracts
  8 +{
  9 + public interface ITableDataService
  10 + {
  11 + void Store<T>(T item) where T : new();
  12 + void BatchStore<T>(IEnumerable<T> items) where T : class;
  13 + IEnumerable<T> GetAll<T>() where T : class;
  14 + T GetItem<T>(string key) where T : class;
  15 + }
  16 +}
sources/RoboforkApp.AWS/DynamoDb/DynamoService.cs
  1 +using System.Collections.Generic;
  2 +using Amazon.DynamoDBv2;
  3 +using Amazon.DynamoDBv2.DataModel;
  4 +using RoboforkApp.AWS.Contracts;
  5 +
  6 +namespace RoboforkApp.AWS.DynamoDb
  7 +{
  8 + public class DynamoService : ITableDataService
  9 + {
  10 + public readonly DynamoDBContext DbContext;
  11 + public AmazonDynamoDBClient DynamoClient;
  12 +
  13 + public DynamoService()
  14 + {
  15 + DynamoClient = new AmazonDynamoDBClient();
  16 +
  17 + DbContext = new DynamoDBContext(DynamoClient, new DynamoDBContextConfig
  18 + {
  19 + //Setting the Consistent property to true ensures that you'll always get the latest
  20 + ConsistentRead = true,
  21 + SkipVersionCheck = true
  22 + });
  23 + }
  24 +
  25 + /// <summary>
  26 + /// The Store method allows you to save a POCO to DynamoDb
  27 + /// </summary>
  28 + /// <typeparam name="T"></typeparam>
  29 + /// <param name="item"></param>
  30 + public void Store<T>(T item) where T : new()
  31 + {
  32 + DbContext.Save(item);
  33 + }
  34 +
  35 + /// <summary>
  36 + /// The BatchStore Method allows you to store a list of items of type T to dynamoDb
  37 + /// </summary>
  38 + /// <typeparam name="T"></typeparam>
  39 + /// <param name="items"></param>
  40 + public void BatchStore<T>(IEnumerable<T> items) where T : class
  41 + {
  42 + var itemBatch = DbContext.CreateBatchWrite<T>();
  43 +
  44 + foreach (var item in items)
  45 + {
  46 + itemBatch.AddPutItem(item);
  47 + }
  48 +
  49 + itemBatch.Execute();
  50 + }
  51 + /// <summary>
  52 + /// Uses the scan operator to retrieve all items in a table
  53 + /// <remarks>[CAUTION] This operation can be very expensive if your table is large</remarks>
  54 + /// </summary>
  55 + /// <typeparam name="T"></typeparam>
  56 + /// <returns></returns>
  57 + public IEnumerable<T> GetAll<T>() where T : class
  58 + {
  59 + IEnumerable<T> items = DbContext.Scan<T>();
  60 + return items;
  61 + }
  62 +
  63 + /// <summary>
  64 + /// Retrieves an item based on a search key
  65 + /// </summary>
  66 + /// <typeparam name="T"></typeparam>
  67 + /// <param name="key"></param>
  68 + /// <returns></returns>
  69 + public T GetItem<T>(string key) where T : class
  70 + {
  71 + return DbContext.Load<T>(key);
  72 + }
  73 +
  74 + /// <summary>
  75 + /// Method Updates and existing item in the table
  76 + /// </summary>
  77 + /// <typeparam name="T"></typeparam>
  78 + /// <param name="item"></param>
  79 + public void UpdateItem<T>(T item) where T : class
  80 + {
  81 + T savedItem = DbContext.Load(item);
  82 +
  83 + if (savedItem == null)
  84 + {
  85 + throw new AmazonDynamoDBException("The item does not exist in the Table");
  86 + }
  87 +
  88 + DbContext.Save(item);
  89 + }
  90 +
  91 + /// <summary>
  92 + /// Deletes an Item from the table.
  93 + /// </summary>
  94 + /// <typeparam name="T"></typeparam>
  95 + /// <param name="item"></param>
  96 + public void DeleteItem<T>(T item)
  97 + {
  98 + var savedItem = DbContext.Load(item);
  99 +
  100 + if (savedItem == null)
  101 + {
  102 + throw new AmazonDynamoDBException("The item does not exist in the Table");
  103 + }
  104 +
  105 + DbContext.Delete(item);
  106 + }
  107 +
  108 + }
  109 +}
sources/RoboforkApp.AWS/Entities/DynamoTable.cs
  1 +namespace RoboforkApp.AWS.Entities
  2 +{
  3 + public class DynamoTable
  4 + {
  5 + public string PrimaryKey { get; set; }
  6 + public string HashKey { get; set; }
  7 + public string RangeKey { get; set; }
  8 + }
  9 +}
sources/RoboforkApp.AWS/Properties/AssemblyInfo.cs
  1 +using System.Reflection;
  2 +using System.Runtime.CompilerServices;
  3 +using System.Runtime.InteropServices;
  4 +
  5 +// General Information about an assembly is controlled through the following
  6 +// set of attributes. Change these attribute values to modify the information
  7 +// associated with an assembly.
  8 +[assembly: AssemblyTitle("RoboforkApp.AWS")]
  9 +[assembly: AssemblyDescription("")]
  10 +[assembly: AssemblyConfiguration("")]
  11 +[assembly: AssemblyCompany("")]
  12 +[assembly: AssemblyProduct("RoboforkApp.AWS")]
  13 +[assembly: AssemblyCopyright("Copyright © 2017")]
  14 +[assembly: AssemblyTrademark("")]
  15 +[assembly: AssemblyCulture("")]
  16 +
  17 +// Setting ComVisible to false makes the types in this assembly not visible
  18 +// to COM components. If you need to access a type in this assembly from
  19 +// COM, set the ComVisible attribute to true on that type.
  20 +[assembly: ComVisible(false)]
  21 +
  22 +// The following GUID is for the ID of the typelib if this project is exposed to COM
  23 +// [assembly: Guid("9dfd12bf-548c-4489-8b66-5d7717541002")]
  24 +
  25 +// Version information for an assembly consists of the following four values:
  26 +//
  27 +// Major Version
  28 +// Minor Version
  29 +// Build Number
  30 +// Revision
  31 +//
  32 +// You can specify all the values or you can default the Build and Revision Numbers
  33 +// by using the '*' as shown below:
  34 +// [assembly: AssemblyVersion("1.0.*")]
  35 +[assembly: AssemblyVersion("1.0.0.0")]
  36 +[assembly: AssemblyFileVersion("1.0.0.0")]
sources/RoboforkApp.AWS/RoboforkApp.AWS.csproj
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3 + <PropertyGroup>
  4 + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  5 + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  6 + <ProductVersion>9.0.30729</ProductVersion>
  7 + <SchemaVersion>2.0</SchemaVersion>
  8 + <ProjectGuid>{A4DB3A6A-7959-4517-844B-4D00AE09436C}</ProjectGuid>
  9 + <OutputType>Library</OutputType>
  10 + <AppDesignerFolder>Properties</AppDesignerFolder>
  11 + <RootNamespace>RoboforkApp.AWS</RootNamespace>
  12 + <AssemblyName>RoboforkApp.AWS</AssemblyName>
  13 + <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  14 + <FileAlignment>512</FileAlignment>
  15 + <IsWebBootstrapper>false</IsWebBootstrapper>
  16 + <FileUpgradeFlags>
  17 + </FileUpgradeFlags>
  18 + <OldToolsVersion>3.5</OldToolsVersion>
  19 + <UpgradeBackupLocation />
  20 + <PublishUrl>publish\</PublishUrl>
  21 + <Install>true</Install>
  22 + <InstallFrom>Disk</InstallFrom>
  23 + <UpdateEnabled>false</UpdateEnabled>
  24 + <UpdateMode>Foreground</UpdateMode>
  25 + <UpdateInterval>7</UpdateInterval>
  26 + <UpdateIntervalUnits>Days</UpdateIntervalUnits>
  27 + <UpdatePeriodically>false</UpdatePeriodically>
  28 + <UpdateRequired>false</UpdateRequired>
  29 + <MapFileExtensions>true</MapFileExtensions>
  30 + <ApplicationRevision>0</ApplicationRevision>
  31 + <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
  32 + <UseApplicationTrust>false</UseApplicationTrust>
  33 + <BootstrapperEnabled>true</BootstrapperEnabled>
  34 + <TargetFrameworkProfile />
  35 + </PropertyGroup>
  36 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  37 + <DebugSymbols>true</DebugSymbols>
  38 + <DebugType>full</DebugType>
  39 + <Optimize>false</Optimize>
  40 + <OutputPath>bin\Debug\</OutputPath>
  41 + <DefineConstants>DEBUG;TRACE</DefineConstants>
  42 + <ErrorReport>prompt</ErrorReport>
  43 + <WarningLevel>4</WarningLevel>
  44 + <DocumentationFile>
  45 + </DocumentationFile>
  46 + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
  47 + </PropertyGroup>
  48 + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  49 + <DebugType>pdbonly</DebugType>
  50 + <Optimize>true</Optimize>
  51 + <OutputPath>bin\Release\</OutputPath>
  52 + <DefineConstants>TRACE</DefineConstants>
  53 + <ErrorReport>prompt</ErrorReport>
  54 + <WarningLevel>4</WarningLevel>
  55 + <DocumentationFile>
  56 + </DocumentationFile>
  57 + <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
  58 + </PropertyGroup>
  59 + <PropertyGroup>
  60 + <StartupObject />
  61 + </PropertyGroup>
  62 + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  63 + <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  64 + Other similar extension points exist, see Microsoft.Common.targets.
  65 + <Target Name="BeforeBuild">
  66 + </Target>
  67 + <Target Name="AfterBuild">
  68 + </Target>
  69 + -->
  70 + <Choose>
  71 + <When Condition=" '$(TargetFrameworkVersion)' == 'v3.5' Or '$(TargetFrameworkVersion)' == 'v4.0' ">
  72 + <ItemGroup>
  73 + <Reference Include="AWSSDK.Core, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  74 + <SpecificVersion>False</SpecificVersion>
  75 + <Private>True</Private>
  76 + <HintPath>C:\Program Files (x86)\AWS SDK for .NET\bin\Net35\AWSSDK.Core.dll</HintPath>
  77 + </Reference>
  78 + <Reference Include="AWSSDK.S3, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  79 + <SpecificVersion>False</SpecificVersion>
  80 + <Private>True</Private>
  81 + <HintPath>C:\Program Files (x86)\AWS SDK for .NET\bin\Net35\AWSSDK.S3.dll</HintPath>
  82 + </Reference>
  83 + </ItemGroup>
  84 + </When>
  85 + <Otherwise />
  86 + </Choose>
  87 + <ItemGroup>
  88 + <Reference Include="AWSSDK">
  89 + <HintPath>C:\Program Files (x86)\AWS SDK for .NET\past-releases\Version-2\Net45\AWSSDK.dll</HintPath>
  90 + </Reference>
  91 + <Reference Include="System" />
  92 + <Reference Include="System.Core" />
  93 + <Reference Include="System.Xml.Linq" />
  94 + <Reference Include="System.Data.DataSetExtensions" />
  95 + <Reference Include="Microsoft.CSharp" />
  96 + <Reference Include="System.Data" />
  97 + <Reference Include="System.Xml" />
  98 + </ItemGroup>
  99 + <ItemGroup>
  100 + <Compile Include="Contracts\ITableDataService.cs" />
  101 + <Compile Include="DynamoDb\DynamoService.cs" />
  102 + <Compile Include="Entities\DynamoTable.cs" />
  103 + <Compile Include="Properties\AssemblyInfo.cs" />
  104 + </ItemGroup>
  105 + <ItemGroup>
  106 + <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
  107 + <Visible>False</Visible>
  108 + <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
  109 + <Install>false</Install>
  110 + </BootstrapperPackage>
  111 + <BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
  112 + <Visible>False</Visible>
  113 + <ProductName>.NET Framework 2.0 %28x86%29</ProductName>
  114 + <Install>true</Install>
  115 + </BootstrapperPackage>
  116 + <BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
  117 + <Visible>False</Visible>
  118 + <ProductName>.NET Framework 3.0 %28x86%29</ProductName>
  119 + <Install>false</Install>
  120 + </BootstrapperPackage>
  121 + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
  122 + <Visible>False</Visible>
  123 + <ProductName>.NET Framework 3.5</ProductName>
  124 + <Install>false</Install>
  125 + </BootstrapperPackage>
  126 + <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
  127 + <Visible>False</Visible>
  128 + <ProductName>.NET Framework 3.5 SP1</ProductName>
  129 + <Install>false</Install>
  130 + </BootstrapperPackage>
  131 + </ItemGroup>
  132 + <ItemGroup>
  133 + <None Include="App.config" />
  134 + </ItemGroup>
  135 +</Project>
sources/RoboforkApp/Entities/Fork2PC.cs
  1 +using System.Collections.Generic;
  2 +using Amazon.DynamoDBv2.DataModel;
  3 +
  4 +namespace RoboforkApp.Entities
  5 +{
  6 + [DynamoDBTable("Fork2PCTable")]
  7 + public class Fork2PC
  8 + {
  9 + // フォークリフトそれぞれの ID ※ID は”1”固定
  10 + [DynamoDBHashKey]
  11 + public int ForkID { get; set; }
  12 + // 実舵角 ※10 進数 LSB 0.1
  13 + public byte ang_str { get; set; }
  14 + // 駆動コントローラフェールフラグ
  15 + public byte fail_con1 { get; set; }
  16 + // ステアコントローラフェールフラグ
  17 + public byte fail_con2 { get; set; }
  18 + // ハンディコントローラのフェールフラグ
  19 + public byte fail_hand { get; set; }
  20 + // リフト高さセンサのフェールフラグ
  21 + public byte fail_high { get; set; }
  22 + // 走行モータのフェールフラグ
  23 + public byte fail_mot1 { get; set; }
  24 + // ステアモータのフェールフラグ
  25 + public byte fail_mot2 { get; set; }
  26 + // リフト油圧モータのフェールフラグ
  27 + public byte fail_mot3 { get; set; }
  28 + // 車速センサのフェールフラグ
  29 + public byte fail_spd { get; set; }
  30 + // 舵角センサのフェールフラグ
  31 + public byte fail_str { get; set; }
  32 + // 重度バッテリ低下フラグ
  33 + public byte flag_bat_hi { get; set; }
  34 + // 軽度バッテリ低下フラグ
  35 + public byte flag_bat_lo { get; set; }
  36 + // 緊急停止フラグ
  37 + public byte flag_emestp { get; set; }
  38 + // 軽度エラーフラグ
  39 + public byte flag_err1 { get; set; }
  40 + // 重度エラーフラグ
  41 + public byte flag_err2 { get; set; }
  42 + // ハンディ操作中フラグ
  43 + public byte flag_handy { get; set; }
  44 + // READY フラグ
  45 + public byte flag_ready { get; set; }
  46 + // スキャナによる停止中フラグ
  47 + public byte flag_stop { get; set; }
  48 + // 出発時点からの x 変位※10 進数 LSB 0.001 m ←GPS 使用
  49 + public double ForkPos_x { get; set; }
  50 + // 出発地点からの y 変位 ※10 進数 LSB 0.001 m ←GPS 使用
  51 + public double ForkPos_y { get; set; }
  52 + // 実リフト高さ ※10 進数 LSB 0.001 m
  53 + public double height_lift { get; set; }
  54 + // 実速度 ※10 進数 LSB 0.001m
  55 + public double spd_veh { get; set; }
  56 + // GPS データ ※GPRMC 方式 このデータのみ String
  57 + public string GPS_data { get; set; }
  58 +
  59 + //public override string ToString()
  60 + //{
  61 + // return string.Format(@"{0} – {1} Actors: {2}", Title, ReleaseYear, string.Join(", ", ActorNames.ToArray()));
  62 + //}
  63 + }
  64 +}
sources/RoboforkApp/Entities/Robofork15Demo.cs
  1 +using System.Collections.Generic;
  2 +using Amazon.DynamoDBv2.DataModel;
  3 +
  4 +namespace RoboforkApp.Entities
  5 +{
  6 + [DynamoDBTable("Robofork15Demo")]
  7 + public class Robofork15Demo
  8 + {
  9 + // フォークリフト毎の ID(No.)今回は"1"固定
  10 + [DynamoDBHashKey]
  11 + public int ForkID { get; set; }
  12 + // ラストノードフラグ 最後のノードでは”1”
  13 + public byte LastNodeFlag { get; set; }
  14 + // スタート位置からのノードの ID
  15 + public int NodeID { get; set; }
  16 + // ノードの目標リフト高さ ※10 進数 LSB 0.001 m
  17 + public double NodeLftHeight { get; set; }
  18 + // スタート位置からの x 差分 ※10 進数 LSB 0.001 m
  19 + public double NodePos_x { get; set; }
  20 + // スタート位置からの y 差分 ※10 進数 LSB 0.001 m
  21 + public double NodePos_y { get; set; }
  22 + // ノードの目標速度 ※10 進数 LSB 0.001m
  23 + public double NodeVehSpd { get; set; }
  24 + // ノードの車両角度(前ノードとの差分)
  25 + public double NodeVehAng { get; set; }
  26 + }
  27 +}
sources/RoboforkApp/Services/Fork2PCTableService.cs
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using Amazon.DynamoDBv2;
  4 +using Amazon.DynamoDBv2.DocumentModel;
  5 +using Amazon.DynamoDBv2.Model;
  6 +using RoboforkApp.AWS.DynamoDb;
  7 +using RoboforkApp.Entities;
  8 +
  9 +namespace RoboforkApp.Services
  10 +{
  11 + public class Fork2PCTableService
  12 + {
  13 + private readonly DynamoService _dynamoService;
  14 +
  15 + public Fork2PCTableService()
  16 + {
  17 + _dynamoService = new DynamoService();
  18 + }
  19 +
  20 + /// <summary>
  21 + /// AddFork2PC will accept a Fork2PC object and creates an Item on Amazon DynamoDB
  22 + /// </summary>
  23 + /// <param name="fork2PC"></param>
  24 + public void AddFork2PC(Fork2PC fork2PC)
  25 + {
  26 + _dynamoService.Store(fork2PC);
  27 + }
  28 +
  29 + /// <summary>
  30 + /// ModifyFork2PC tries to load an existing Fork2PC, modifies and saves it back. If the Item doesn’t exist, it raises an exception
  31 + /// </summary>
  32 + /// <param name="fork2PC"></param>
  33 + public void ModifyFork2PC(Fork2PC fork2PC)
  34 + {
  35 + _dynamoService.UpdateItem(fork2PC);
  36 + }
  37 +
  38 + /// <summary>
  39 + /// GetALllFork2PCs will perform a Table Scan operation to return all the Fork2PCs
  40 + /// </summary>
  41 + /// <returns></returns>
  42 + public IEnumerable<Fork2PC> GetAllFork2PCs()
  43 + {
  44 + return _dynamoService.GetAll<Fork2PC>();
  45 + }
  46 +
  47 + /// <summary>
  48 + /// SearchFork2PCs will search all data Fork2PCs with id
  49 + /// </summary>
  50 + /// <param name="title"></param>
  51 + /// <param name="releaseYear"></param>
  52 + /// <returns></returns>
  53 + public IEnumerable<Fork2PC> SearchFork2PCs(int forkId)
  54 + {
  55 + IEnumerable<Fork2PC> filteredFork2PCs = _dynamoService.DbContext.Query<Fork2PC>(forkId, QueryOperator.Equal);
  56 +
  57 + return filteredFork2PCs;
  58 + }
  59 +
  60 + /// <summary>
  61 + /// Delete Fork2PC will remove an item from DynamoDb
  62 + /// </summary>
  63 + /// <param name="fork2PC"></param>
  64 + public void DeleteFork2PC(Fork2PC fork2PC)
  65 + {
  66 + _dynamoService.DeleteItem(fork2PC);
  67 + }
  68 + }
  69 +}
sources/RoboforkApp/Services/Robofork15DemoService.cs
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using Amazon.DynamoDBv2;
  4 +using Amazon.DynamoDBv2.DocumentModel;
  5 +using Amazon.DynamoDBv2.Model;
  6 +using RoboforkApp.AWS.DynamoDb;
  7 +using RoboforkApp.Entities;
  8 +
  9 +namespace RoboforkApp.Services
  10 +{
  11 + public class Robofork15DemoService
  12 + {
  13 + private readonly DynamoService _dynamoService;
  14 +
  15 + public Robofork15DemoService()
  16 + {
  17 + _dynamoService = new DynamoService();
  18 + }
  19 +
  20 + /// <summary>
  21 + /// AddRobofork15Demo will accept a Robofork15Demo object and creates an Item on Amazon DynamoDB
  22 + /// </summary>
  23 + /// <param name="robofork15Demo"></param>
  24 + public void AddRobofork15Demo(Robofork15Demo robofork15Demo)
  25 + {
  26 + _dynamoService.Store(robofork15Demo);
  27 + }
  28 +
  29 + /// <summary>
  30 + /// ModifyRobofork15Demo tries to load an existing Robofork15Demo, modifies and saves it back. If the Item doesn’t exist, it raises an exception
  31 + /// </summary>
  32 + /// <param name="robofork15Demo"></param>
  33 + public void ModifyRobofork15Demo(Robofork15Demo robofork15Demo)
  34 + {
  35 + _dynamoService.UpdateItem(robofork15Demo);
  36 + }
  37 +
  38 + /// <summary>
  39 + /// GetALllRobofork15Demos will perform a Table Scan operation to return all the Robofork15Demos
  40 + /// </summary>
  41 + /// <returns></returns>
  42 + public IEnumerable<Robofork15Demo> GetAllRobofork15Demos()
  43 + {
  44 + return _dynamoService.GetAll<Robofork15Demo>();
  45 + }
  46 +
  47 + /// <summary>
  48 + /// SearchRobofork15Demos will search all data Robofork15Demos with id
  49 + /// </summary>
  50 + /// <param name="forkId">Fork Id</param>
  51 + /// <returns></returns>
  52 + public IEnumerable<Robofork15Demo> SearchRobofork15Demos(int forkId)
  53 + {
  54 + IEnumerable<Robofork15Demo> filteredRobofork15Demos = _dynamoService.DbContext.Query<Robofork15Demo>(forkId, QueryOperator.Equal);
  55 +
  56 + return filteredRobofork15Demos;
  57 + }
  58 +
  59 + /// <summary>
  60 + /// Delete Robofork15Demo will remove an item from DynamoDb
  61 + /// </summary>
  62 + /// <param name="robofork15Demo"></param>
  63 + public void DeleteRobofork15Demo(Robofork15Demo robofork15Demo)
  64 + {
  65 + _dynamoService.DeleteItem(robofork15Demo);
  66 + }
  67 + }
  68 +}