Commit 1debe12ff4ab9f90964978db6d6421277acb6918
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
- sources/RoboforkApp.AWS/Contracts/ITableDataService.cs
- sources/RoboforkApp.AWS/DynamoDb/DynamoService.cs
- sources/RoboforkApp.AWS/Entities/DynamoTable.cs
- sources/RoboforkApp.AWS/Properties/AssemblyInfo.cs
- sources/RoboforkApp.AWS/RoboforkApp.AWS.csproj
- sources/RoboforkApp/Entities/Fork2PC.cs
- sources/RoboforkApp/Entities/Robofork15Demo.cs
- sources/RoboforkApp/Services/Fork2PCTableService.cs
- sources/RoboforkApp/Services/Robofork15DemoService.cs
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
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 | +} |