Files
DP44/docs/ai/Common/DTS.CommonCore/Interface/Database.md

94 lines
5.8 KiB
Markdown
Raw Normal View History

2026-04-17 14:55:32 -04:00
---
source_files:
- Common/DTS.CommonCore/Interface/Database/IDatabaseCopyView.cs
- Common/DTS.CommonCore/Interface/Database/IDatabaseSwitchView.cs
- Common/DTS.CommonCore/Interface/Database/IDatabaseStatusBarView.cs
- Common/DTS.CommonCore/Interface/Database/IDatabaseSwitchViewModel.cs
- Common/DTS.CommonCore/Interface/Database/IUserDbRecord.cs
- Common/DTS.CommonCore/Interface/Database/IDatabaseCopyViewModel.cs
- Common/DTS.CommonCore/Interface/Database/IDatabaseStatusBarViewModel.cs
generated_at: "2026-04-17T16:22:17.503077+00:00"
model: "zai-org/GLM-5-FP8"
schema_version: 1
sha256: "67bd14e2aba6132e"
---
# Database
### Purpose
This module defines the contract layer for database management operations in a desktop application, specifically handling database switching (remote/local), database copying, and status bar display. It follows a Model-View-ViewModel (MVVM) pattern where views are abstracted behind interfaces to enable testability and loose coupling between UI components and business logic for database operations.
### Public Interface
**IDatabaseCopyView** : IBaseView
- Marker interface for the database copy view. No members defined.
**IDatabaseSwitchView** : IBaseView
- Marker interface for the database switch view. No members defined.
**IDatabaseStatusBarView** : IBaseView
- Marker interface for the database status bar view. No members defined.
**IDatabaseSwitchViewModel** : IBaseViewModel
- `IDatabaseSwitchView View { get; set; }` - The associated view instance.
- `void Unset()` - Releases memory/resources associated with the viewmodel.
- `bool RemoteIsActive { get; }` - Indicates whether the remote database is currently active.
- `string DefaultDbName { get; }` - Returns the default database name.
- `void InitializeDbSettings(string defaultDbName, string dbHost, bool ntlmAuthentication, string dbUser, string dbPassword)` - Initializes database connection settings.
- `void SwitchRemote()` - Switches to the remote database.
- `void SwitchLocal()` - Switches to the local database.
- `string DbHost { get; }` - Database host address.
- `bool NTLMAuthentication { get; }` - Whether NTLM authentication is enabled.
- `string DbUser { get; }` - Database username.
- `string DbPassword { get; }` - Database password.
**IUserDbRecord**
- `int ID { get; set; }` - Database ID of the user.
- `string UserName { get; set; }` - Unique username.
- `string DisplayName { get; set; }` - UI display name for the user.
- `string Password { get; set; }` - Hashed and salted password value (not plaintext).
- `short Role { get; set; }` - User role identifier.
- `DateTime LastModified { get; set; }` - Timestamp of last modification.
- `string LastModifiedBy { get; set; }` - Username of the user who made the last modification.
- `bool LocalOnly { get; set; }` - Deprecated field for local/remote synchronization control.
**IDatabaseCopyViewModel** : IBaseViewModel
- `IDatabaseCopyView View { get; set; }` - The associated view instance.
- `void Unset()` - Releases memory/resources associated with the viewmodel.
- `void CopyDatabase()` - Copies from remote database to local database using `DTS.Common.Storage` to determine locations.
- `void InitializeState(DbType dbType, string dbName)` - Initializes viewmodel state.
- `string DbName { get; }` - The database name.
- `IStatusAndProgressBarView OverallProgressBarView { get; }` - Overall progress/status display.
- `IStatusAndProgressBarView CurrentTaskProgressBarView { get; }` - Current task progress/status display.
- `DbType DatabaseType { get; }` - The type of database.
- `bool CopyEnabled { get; }` - Whether copy operation is enabled.
- `bool IsCopyVisible { get; set; }` - Visibility state for copy UI.
**IDatabaseStatusBarViewModel** : IBaseViewModel
- `IDatabaseStatusBarView View { get; set; }` - The associated view instance.
- `void Unset()` - Releases memory/resources associated with the viewmodel.
- `DbType DatabaseType { get; }` - The database type (populated via `InitializeValues`).
- `bool RemoteConnected { get; }` - Whether remote database is connected (populated via `InitializeValues`).
- `string ServerName { get; }` - Server name, not database name (populated via `InitializeValues`).
- `void InitializeValues(DbType dbType, string serverName, bool remoteConnected)` - Sets initial values for display.
- `string ActiveDbName { get; }` - Current active database name based on type and connection status.
- `Brush BackgroundBrush { get; }` - WPF brush for background styling of the active database name.
### Invariants
- `IUserDbRecord.UserName` must be unique across all users.
- `IUserDbRecord.Password` must always be a hashed and salted value, never plaintext.
- `IDatabaseCopyViewModel.CopyDatabase()` requires a local database with correct tables and stored procedures pre-existing.
- `IDatabaseSwitchViewModel` requires a local database with correct schema before switching to local.
- `IDatabaseStatusBarViewModel.InitializeValues` must be called before accessing `DatabaseType`, `RemoteConnected`, `ServerName`, or `ActiveDbName`.
### Dependencies
- **Depends on**: `DTS.Common.Base` (IBaseView, IBaseViewModel), `DTS.Common.Enums.Database` (DbType), `System.Windows.Media` (Brush), `System` (DateTime).
- **Depended on by**: Concrete view/viewmodel implementations, database management services, UI components displaying database status.
### Gotchas
- `IUserDbRecord.LocalOnly` is marked as deprecated in the source comments; avoid using it in new code.
- `IDatabaseSwitchViewModel` has a commented-out method `SetDefaultDbName` suggesting API evolution; use `InitializeDbSettings` instead.
- The `IDatabaseCopyViewModel` documentation states it "clears the local database and populates it with the remote database" - this is a destructive operation.
- `IDatabaseStatusBarViewModel.ServerName` returns the server name, not the database name, despite the property name potentially being ambiguous.
---