public void Test() { var obj = new StoredCommand(new DispatchCommand(new TempCommand())); using (var session = _store.OpenSession()) { session.Store(obj); session.SaveChanges(); } using (var session = _store.OpenSession()) { Assert.NotNull(session.Query <StoredCommand>().FirstOrDefault()); } using (var session = _store.OpenSession()) { var item = session.Load <StoredCommand>(obj.Id); session.Delete(item); } }
/// <summary> /// Return null if failed to restore command. /// </summary> /// <param name="context"></param> /// <param name="backupStoredCmd"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async static Task<IStoredCommand> RestoreStoredCommandAsync(ZvsContext context, StoredCmdBackup backupStoredCmd, CancellationToken cancellationToken) { if (backupStoredCmd == null) return null; switch (backupStoredCmd.CommandType) { case CommandTypes.Device: case CommandTypes.DeviceType: { var storedCommand = new StoredCommand(); Command c = null; if (backupStoredCmd.CommandType == CommandTypes.Device) { c = await context.DeviceCommands .FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier && o.Device.NodeNumber == backupStoredCmd.NodeNumber, cancellationToken); } if (backupStoredCmd.CommandType == CommandTypes.DeviceType) { c = await context.DeviceTypeCommands .FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier && o.DeviceType.Devices.Any(p => p.NodeNumber == backupStoredCmd.NodeNumber), cancellationToken); var dId = await context.Devices .Where(o => o.NodeNumber == backupStoredCmd.NodeNumber) .Select(o => o.Id) .FirstOrDefaultAsync(cancellationToken); storedCommand.Argument2 = dId.ToString(); } if (c == null) return null; storedCommand.Argument = backupStoredCmd.Argument; storedCommand.CommandId = c.Id; return storedCommand; } case CommandTypes.Builtin: case CommandTypes.JavaScript: { Command c = null; if (backupStoredCmd.CommandType == CommandTypes.Builtin) c = await context.BuiltinCommands.FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier, cancellationToken); if (backupStoredCmd.CommandType == CommandTypes.JavaScript) c = await context.JavaScriptCommands.FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier, cancellationToken); if (c == null) return null; var sc = new StoredCommand {Argument = backupStoredCmd.Argument, CommandId = c.Id}; return sc; } } return null; }
/// <summary> /// Return null if failed to restore command. /// </summary> /// <param name="context"></param> /// <param name="backupStoredCmd"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async static Task <IStoredCommand> RestoreStoredCommandAsync(ZvsContext context, StoredCmdBackup backupStoredCmd, CancellationToken cancellationToken) { if (backupStoredCmd == null) { return(null); } switch (backupStoredCmd.CommandType) { case CommandTypes.Device: case CommandTypes.DeviceType: { var storedCommand = new StoredCommand(); Command c = null; if (backupStoredCmd.CommandType == CommandTypes.Device) { c = await context.DeviceCommands .FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier && o.Device.NodeNumber == backupStoredCmd.NodeNumber, cancellationToken); } if (backupStoredCmd.CommandType == CommandTypes.DeviceType) { c = await context.DeviceTypeCommands .FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier && o.DeviceType.Devices.Any(p => p.NodeNumber == backupStoredCmd.NodeNumber), cancellationToken); var dId = await context.Devices .Where(o => o.NodeNumber == backupStoredCmd.NodeNumber) .Select(o => o.Id) .FirstOrDefaultAsync(cancellationToken); storedCommand.Argument2 = dId.ToString(); } if (c == null) { return(null); } storedCommand.Argument = backupStoredCmd.Argument; storedCommand.CommandId = c.Id; return(storedCommand); } case CommandTypes.Builtin: case CommandTypes.JavaScript: { Command c = null; if (backupStoredCmd.CommandType == CommandTypes.Builtin) { c = await context.BuiltinCommands.FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier, cancellationToken); } if (backupStoredCmd.CommandType == CommandTypes.JavaScript) { c = await context.JavaScriptCommands.FirstOrDefaultAsync(o => o.UniqueIdentifier == backupStoredCmd.UniqueIdentifier, cancellationToken); } if (c == null) { return(null); } var sc = new StoredCommand { Argument = backupStoredCmd.Argument, CommandId = c.Id }; return(sc); } } return(null); }