using DbAPI.Connections;
using DTS.Common.Interface.Database;
using DTS.Common.Interface.Groups;
using DTS.Common.Interface.TestSetups;
using DTS.Common.Interface.TestSetups.TestSetupsList;
using System;
namespace DbAPI.TestSetups
{
///
/// defines functions to create, retrieve, update, delete test setups
///
public interface ITestSetups
{
///
/// deletes matching test setup hardware record
/// at least one parameter (id/dasid/testsetupid) must be specified
///
/// user making request
/// connection request is being made on
/// id of test setup hardware record (null for all)
/// id of das (null for all)
/// id of test setup (null for all)
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupHardwareDelete(IUserDbRecord user,
IConnectionDetails connection,
int? Id,
int? dasId,
int? testSetupId
);
///
/// updates a test setup hardware record
///
/// user committing update
/// connection update is being made on
/// updated record
/// 0 on success, all other values are error codes
ulong TestSetupHardwareUpdate(IUserDbRecord user,
IConnectionDetails connection,
ITestSetupHardwareRecord record);
///
/// inserts a new record
///
/// user inserting record
/// connection being inserted on
/// record being inserted
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupHardwareInsert(IUserDbRecord user,
IConnectionDetails connection,
ITestSetupHardwareRecord record);
///
/// retrieves all hardware meta data associated with test
/// [sample rate, aaf, etc]
///
/// user retrieving hardware
/// connecting hardware is retrieved on
/// id of test setup (use null for all)
/// all matching records
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupHardwareGet(IUserDbRecord user,
IConnectionDetails connection,
int clientDbVersion,
int? testSetupId,
out ITestSetupHardwareRecord[] records);
///
/// inserts a new group/test setup association into db
///
/// user making request
/// connection request is being made on
/// record to insert
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupGroupsInsert(IUserDbRecord user,
IConnectionDetails connection,
ITestSetupGroupRecord record);
///
/// updates a group/test setup association in db
///
/// user making request
/// connection is being made on
/// updated record
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupGroupsUpdate(IUserDbRecord user,
IConnectionDetails connection,
ITestSetupGroupRecord record);
///
/// retrieves all group records matching search criteria
///
/// user making request
/// connection request is being made on
/// database id of group (use null for all)
/// database id of test setup (use null for all)
/// test setup name for test setup (use null for all)
/// matching groups
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupGroupsGet(IUserDbRecord user,
IConnectionDetails connection,
int? groupId,
int? testSetupId,
string testSetupName,
out ITestSetupGroupRecord[] groups
);
///
/// Commits a change to the IsDirty or IsComplete flags in the db for a test
///
/// user committing change
/// connection change is being committed on
/// name of test setup to modify
/// whether to set dirty flag or not. Dirty flag indicates
/// whether the test setup has been checked for completeness and readiness to run
/// whether the test setup is ready to run or not
/// error message(s) associated with test setup, if any
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupsMarkIsDirtyIsComplete(IUserDbRecord user,
IConnectionDetails connection,
string name,
bool dirty,
bool complete,
string error);
///
/// deletes all test setups matching criteria
///
/// user deleting test setups
/// connection tests are being deleted on
/// date of oldest allowed test setup
/// 0 (ERROR_SUCCESS) on success. All other values are error codes.
ulong TestSetupsDeleteByDate(IUserDbRecord user,
IConnectionDetails connection,
DateTime date);
///
/// deletes all test setups and groups
///
/// user requesting deletes
/// connection to delete on
/// 0 (ERROR_SUCCESS) on success. All other values are error codes
ulong TestSetupsAndGroupsDeleteAll(IUserDbRecord user,
IConnectionDetails connection);
///
/// Deletes all test setups that match the search criteria
///
/// user deleting test setups
/// connection to delete test setups on
/// ids of test setups to delete
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupsDeleteById(IUserDbRecord user,
IConnectionDetails connection,
int[] ids);
///
/// deletes all test setups that match the search criteria
///
/// user deleting test setups
/// connection to delete test setups on
/// names of test setups to delete
/// 0 (ERROR_SUCCESS) on success, all other values are error codes
ulong TestSetupsDeleteByName(IUserDbRecord user,
IConnectionDetails connection,
string[] names);
///
/// commits a test setup into the database
///
/// user committing record
/// connection record is being committed on
/// the database version of the client code
/// record being committed
/// 0 (ERROR_SUCCESS) on success, all other values are errors
ulong TestSetupsUpdateInsert(IUserDbRecord user,
IConnectionDetails connection,
int clientDbVersion,
ref ITestSetupRecord record);
///
/// Retrieves all test setups which match given search criteria
///
/// user making query
/// connection over which query is to be made
/// the database version of the client code
/// database id of test setup (can be null)
/// name of test setup (can be null or empty)
/// start time for any ROIs that have to be generated
/// some old test setups may not have ROIs specified for every event
/// end time for any ROIs that have to be generated
/// some old test setups may not have ROIs specified for every event
/// whether or not to ignore a shorted start
/// since we may be using a Version 91 database that doesn't store this
/// whether or not to ignore a shorted trigger
/// since we may be using a Version 91 database that doesn't store this
/// matching records
/// any errors encountered while retrieving test setups
/// 0 (ERROR_SUCCESS) on success, all other values are errors
ulong TestSetupsGet(IUserDbRecord user,
IConnectionDetails connection,
int clientDbVersion,
int? testSetupId,
string testSetupName,
double defaultROIStart,
double defaultROIEnd,
bool defaultIgnoreShortedStart,
bool defaultIgnoreShortedTrigger,
out ITestSetupRecord[] records,
out string[] errors);
}
}