94 lines
5.8 KiB
Markdown
94 lines
5.8 KiB
Markdown
|
|
---
|
||
|
|
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.
|
||
|
|
|
||
|
|
---
|