Files
DP44/enriched-qwen3-coder-next/Common/DTS.Common.Storage/Classes/Abstract.md
2026-04-17 14:55:32 -04:00

15 KiB
Raw Blame History

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common.Storage/Classes/Abstract/MMEPossibleChannels.cs
Common/DTS.Common.Storage/Classes/Abstract/DbVersions.cs
Common/DTS.Common.Storage/Classes/Abstract/Settings.cs
Common/DTS.Common.Storage/Classes/Abstract/VersionTable.cs
Common/DTS.Common.Storage/Classes/Abstract/TestObjectChannelSettings.cs
Common/DTS.Common.Storage/Classes/Abstract/Tags.cs
Common/DTS.Common.Storage/Classes/Abstract/DigitalOutputSettings.cs
Common/DTS.Common.Storage/Classes/Abstract/LabratoryDetails.cs
Common/DTS.Common.Storage/Classes/Abstract/Squib.cs
Common/DTS.Common.Storage/Classes/Abstract/CalculatedChannels.cs
Common/DTS.Common.Storage/Classes/Abstract/Users.cs
Common/DTS.Common.Storage/Classes/Abstract/LevelTriggers.cs
Common/DTS.Common.Storage/Classes/Abstract/SensorDB.cs
Common/DTS.Common.Storage/Classes/Abstract/TestSetups.cs
2026-04-16T02:11:23.946439+00:00 Qwen/Qwen3-Coder-Next-FP8 1 275c64f80988749d

Abstract

Documentation: Storage Abstraction Layer Table and Field Constants


1. Purpose

This module provides a centralized, strongly-typed abstraction layer for database schema metadata within the DTS Storage subsystem. It defines abstract classes containing const string table names and enum types for field names across multiple database tables (e.g., tblSettings, tblSensors, tblTestSetups). These constants are used throughout the codebase to avoid hard-coded string literals in SQL queries, ORM mappings, or data access logic—ensuring consistency, reducing typos, and enabling refactoring safety. The module does not contain business logic, data access implementations, or validation; it is purely a metadata definition layer.


2. Public Interface

All types are abstract classes with no instance members. Public members are const strings and enum declarations.

Type Member Signature Description
MMEPossibleChannels Table public const string Table = "tblMMEPossibleChannels"; Table name for MME possible channel configurations.
DbVersions DbVersionFields public enum DbVersionFields { Version, Step, Date, Remarks, UserField } Field names for the database version tracking table (unspecified table name in source).
Settings Table public const string Table = "tblSettings"; Table name for user/application settings.
Settings UserFields public enum UserFields { PropertyId, PropertyType, PropertyValue, UserId } Field names for the tblSettings table.
VersionTable TableName public const string TableName = "tblDataPRODbVersion"; Table name for version tracking (distinct from DbVersions table reference).
VersionTable Fields public enum Fields { Version, Step, Date, Remarks, UserField } Field names for tblDataPRODbVersion.
TestObjectChannelSettings TableName public const string TableName = "tblTestObjectChannelSettings"; Table name for per-test-object channel configuration.
TestObjectChannelSettings Fields public enum Fields { TestObjectSerial, ChannelId, Setting, SensorSerial } Field names for tblTestObjectChannelSettings.
Tags Table public const string Table = "tblTags"; Table name for tag definitions.
Tags TagFields public enum TagFields { TagId, TagText, Obsolete } Field names for tblTags.
Tags TAGASSIGNMENTS_TABLE public const string TAGASSIGNMENTS_TABLE = "TagAssignments"; Table name for tag assignments (note: no tbl prefix).
Tags TagAssignmentFields public enum TagAssignmentFields { ObjectID, ObjectType, TagID } Field names for TagAssignments.
DigitalOutputSettings Table public const string Table = "tblTOMDigitalChannels"; Table name for digital output channel settings.
DigitalOutputSettings Fields public enum Fields { ChannelDescription, DelayMS, DurationMS, OutputMode, LimitDuration, LastModified, LastModifiedBy, Version, LocalOnly, DurationMSFloat, UserTags } Field names for tblTOMDigitalChannels.
LabratoryDetails Table public const string Table = "tblLabratoryDetails"; Table name for laboratory metadata (note: typo in table name: Labratory vs Laboratory).
LabratoryDetails LabratoryDetailsFields public enum LabratoryDetailsFields { Name, LabratoryName, LabratoryContactName, LabratoryContactPhone, LabratoryContactFax, LabratoryContactEmail, LabratoryTestRefNumber, LabratoryProjectRefNumber, LastModified, LastModifiedBy, LocalOnly, Version } Field names for tblLabratoryDetails.
Squib Table public const string Table = "tblTOMSquibChannels"; Table name for squib (explosive device) channel settings.
Squib Fields public enum Fields { SquibDescription, BypassCurrentFilter, BypassVoltageFilter, DelayMS, DurationMS, FireMode, ISOCode, MeasurementType, SquibOutputCurrent, SquibToleranceLow, SquibToleranceHigh, LimitDuration, ArticleId, LocalOnly, Version, LastModified, LastModifiedBy, UserValue1, UserValue2, UserValue3, UserTags } Field names for tblTOMSquibChannels.
CalculatedChannels Table public const string Table = "tblCalculatedChannels"; Table name for calculated channel definitions.
CalculatedChannels Fields public enum Fields { Id, Operation, CalculatedChannelValueCode, InputChannelIds, CFCForInputChannels, CFCForOutput, TestSetupName, CCName } Field names for tblCalculatedChannels.
Note: Fields use [DbTypeAttr(...)] attributes (e.g., Id is INTEGER PRIMARY KEY NOT NULL).
Users USERS_TABLE public const string USERS_TABLE = "DataPROUsers"; Table name for user accounts (no tbl prefix).
Users UserFields public enum UserFields { ID, UserName, DisplayName, Password, Role, LastModified, LastModifiedBy, LocalOnly } Field names for DataPROUsers.
Users UIITEMS_TABLE public const string UIITEMS_TABLE = "UIITEMS"; Table name for UI item definitions (no tbl prefix).
Users UIItemFields public enum UIItemFields { ID, Name } Field names for UIITEMS.
Users USERUISETTINGS_TABLE public const string USERUISETTINGS_TABLE = "UserUIItemSettings"; Table name for per-user UI settings (no tbl prefix).
Users UserUIItemSettingFields public enum UserUIItemSettingFields { UserId, UIItemID, Permission, Visible } Field names for UserUIItemSettings.
LevelTriggers Table public const string Table = "tblLevelTriggers"; Table name for level-triggering conditions.
LevelTriggers Fields public enum Fields { TestSetupName, GroupSerialNumber, TestObjectChannelId, HardwareChannelId, SensorSerialNumber, GreaterThanEnabled, GreaterThanEU, LessThanEnabled, LessThanEU, InsideUpperEU, InsideLowerEU, OutsideUpperEU, OutsideLowerEU, TriggerInside, TriggerOutside } Field names for tblLevelTriggers.
Note: Fields use [DbTypeAttr(...)] attributes (e.g., GreaterThanEnabled is BIT NOT NULL).
SensorDB SensorCalibrationTable public const string SensorCalibrationTable = "tblSensorCalibrations"; Table name for sensor calibration records.
SensorDB SensorDataTable public const string SensorDataTable = "tblSensors"; Table name for sensor definitions.
SensorDB SensorModelsTable public const string SensorModelsTable = "tblSensorModels"; Table name for sensor model templates.
SensorDB SensorDataFields public enum SensorDataFields { SerialNumber, UserSerialNumber, Model, ... } (48 fields) Field names for tblSensors. Includes metadata (e.g., Version, LocalOnly, UserTags, Broken).
SensorDB SensorModelFields public enum SensorModelFields { Model, Manufacturer, UserPartNumber, ... } (32 fields) Field names for tblSensorModels.
SensorDB SensorCalibrationFields public enum SensorCalibrationFields { SerialNumber, CalibrationDate, Username, ... } (10 fields) Field names for tblSensorCalibrations.
SensorDB SensorCalibrationRecordFields public enum SensorCalibrationRecordFields { Sensitivity, Poly, AtCapacity, ... } (7 fields) Field names for calibration records within tblSensorCalibrations (likely stored as serialized data, e.g., BLOB).
TestSetups HardwareTable public const string HardwareTable = "tblTestSetupHardware"; Table for test setuphardware associations.
TestSetups HardwareFields public enum HardwareFields { TestSetupName, HardwareId, AddOrRemove } Field names for tblTestSetupHardware. AddOrRemove uses 0=remove, 1=add.
TestSetups DASSettingsTable public const string DASSettingsTable = "tblTestSetupDASSettings"; Table name for DAQ settings (no fields enum provided).
TestSetups ChannelSettingsTable public const string ChannelSettingsTable = "tblTestChannelSettings"; Table name for test channel settings.
TestSetups ChannelSettingFields public enum ChannelSettingFields { TestName, TestObjectName, ChannelId, Setting, SensorSerial } Field names for tblTestChannelSettings.
TestSetups TestSetupsTable public const string TestSetupsTable = "tblTestSetups"; Table name for test setup definitions.
TestSetups Fields public enum Fields { SetupName, SetupDescription, AutomaticTestProgression, ... } (64 fields) Field names for tblTestSetups. Includes flags (ROIDownload, ViewRealtime), paths (ExportFolder), and behavior controls (StrictDiagnostics, RequireConfirmationOnErrors).
TestSetups TestSetupObjectsTable public const string TestSetupObjectsTable = "tblTestSetupObjects"; Table for test objects assigned to a test setup.
TestSetups TestSetupObjectFields public enum TestSetupObjectFields { TestObjectSerialNumber, TestSetupName, TargetSampleRate, ... } Field names for tblTestSetupObjects.
TestSetups TestObjectMetaDataTable public const string TestObjectMetaDataTable = "tblTestSetupObjectMetaData"; Table for test object metadata key-value pairs.
TestSetups TestObjectMetaDataFields public enum TestObjectMetaDataFields { TestObject, SetupName, PropName, PropValue, Optional, Version } Field names for tblTestSetupObjectMetaData.
TestSetups TestObjectTemplatesTable public const string TestObjectTemplatesTable = "tblTestObjectTemplates"; Table for test object templates.
TestSetups TestObjectTemplatesFields public enum TestObjectTemplatesFields { TemplateName, Icon, Description, ... } Field names for tblTestObjectTemplates. Includes CRC32, SysBuilt, and ParentTemplate.
TestSetups TestObjectsTable public const string TestObjectsTable = "tblTestObjects"; Table for test object definitions.
TestSetups TestObjectsFields public enum TestObjectsFields { SerialNumber, LastModifiedBy, LastModified, Template, ... } Field names for tblTestObjects. Tracks templates, embedding, and original serial numbers.
TestSetups TestGraphsTable public const string TestGraphsTable = "tblTestGraphs"; Table for test graph configurations.
TestSetups GraphFields public enum GraphFields { GraphName, GraphDescription, TemplateName, Channels, UseDomainMin, DomainMin, ... } Field names for tblTestGraphs. Includes axis ranges and thresholds.

3. Invariants

  • No instance state: All classes are abstract and contain only const and enum members. No runtime behavior or state is defined.
  • Case sensitivity: Table and field names are case-sensitive string literals (e.g., tblSettings, not tblsettings).
  • Naming consistency:
    • Table names use tbl prefix for most tables (e.g., tblSensors, tblTestSetups), but exceptions exist: DataPROUsers, UIITEMS, UserUIItemSettings, TagAssignments.
    • Enum names follow XxxFields or XxxFields pattern (e.g., SensorDataFields, UserFields).
  • Field ordering: Enum values are not explicitly assigned integer values (except SensorDataFields.SerialNumber = 1), so their underlying values are sequential starting from 0 (or 1 for SerialNumber).
  • Type annotations: [DbTypeAttr(...)] attributes (e.g., on CalculatedChannels.Id and LevelTriggers fields) are present in source but are not part of the runtime type system—likely custom attributes for code generation or ORM mapping. Their presence does not affect the enum/const definitions themselves.

4. Dependencies

  • No external dependencies: None of the files reference using directives or external types. All types are self-contained within the DTS.Storage or Storage.Classes.Abstract namespaces.
  • Consumers: This module is intended to be referenced by data access layers, migration scripts, or ORM configurations elsewhere in the codebase (e.g., to build SQL queries like SELECT {TestSetups.Fields.SetupName} FROM {TestSetups.TestSetupsTable}).
  • Namespace overlap: Two namespaces are used: DTS.Storage (most files) and Storage.Classes.Abstract (DbVersions.cs). This suggests possible namespace migration or legacy coexistence.

5. Gotchas

  • Typo in table name: LabratoryDetails class references "tblLabratoryDetails" (misspelled Labratory). This is likely intentional to match an existing database schema.
  • Inconsistent table prefixes: Most tables use tbl prefix, but DataPROUsers, UIITEMS, UserUIItemSettings, and TagAssignments do not.
  • Enum name collisions: UserFields is defined in both Settings and Users classes, but with different fields (PropertyId vs ID, UserName, etc.). This implies separate contexts (settings vs. user accounts).
  • Missing table references: DbVersions defines DbVersionFields but no table name constant; VersionTable defines TableName and Fields, but the fields are identical to DbVersions.DbVersionFields. This suggests potential redundancy or historical duplication.
  • AddOrRemove semantics: In HardwareFields, AddOrRemove = 0 means remove, = 1 means add. This inverse naming may be counterintuitive.
  • SensorCalibrationRecordFields: This enum is defined but no corresponding table name constant is provided. Given the context, calibration records are likely stored as a serialized blob in tblSensorCalibrations.CalibrationRecords, not as a separate table.
  • CalculatedChannels.InputChannelIds: Typed as BLOB (likely storing a serialized list of channel IDs). Consumers must handle serialization/deserialization.
  • CalculatedChannels.CFCForInputChannels / CFCForOutput: Field names suggest "Calculated Function Chain" (CFC) logic, but no documentation of the format or execution engine is provided here.

None identified beyond those listed.