|
1 | 1 | // Contains models for the data we want to store in the database config |
2 | 2 |
|
3 | 3 | export interface DbConfig { |
| 4 | + databases: DbConfigDatabases; |
| 5 | + selected?: SelectedDbItem; |
| 6 | +} |
| 7 | + |
| 8 | +export interface DbConfigDatabases { |
4 | 9 | remote: RemoteDbConfig; |
5 | 10 | local: LocalDbConfig; |
6 | 11 | } |
7 | 12 |
|
| 13 | +export interface SelectedDbItem { |
| 14 | + kind: SelectedDbItemKind; |
| 15 | + value: string; |
| 16 | +} |
| 17 | + |
| 18 | +export enum SelectedDbItemKind { |
| 19 | + ConfigDefined = 'configDefined', |
| 20 | + RemoteSystemDefinedList = 'remoteSystemDefinedList', |
| 21 | +} |
| 22 | + |
8 | 23 | export interface RemoteDbConfig { |
9 | 24 | repositoryLists: RemoteRepositoryList[]; |
10 | 25 | owners: string[]; |
@@ -35,20 +50,26 @@ export interface LocalDatabase { |
35 | 50 |
|
36 | 51 | export function cloneDbConfig(config: DbConfig): DbConfig { |
37 | 52 | return { |
38 | | - remote: { |
39 | | - repositoryLists: config.remote.repositoryLists.map((list) => ({ |
40 | | - name: list.name, |
41 | | - repositories: [...list.repositories], |
42 | | - })), |
43 | | - owners: [...config.remote.owners], |
44 | | - repositories: [...config.remote.repositories], |
45 | | - }, |
46 | | - local: { |
47 | | - lists: config.local.lists.map((list) => ({ |
48 | | - name: list.name, |
49 | | - databases: list.databases.map((db) => ({ ...db })), |
50 | | - })), |
51 | | - databases: config.local.databases.map((db) => ({ ...db })), |
| 53 | + databases: { |
| 54 | + remote: { |
| 55 | + repositoryLists: config.databases.remote.repositoryLists.map((list) => ({ |
| 56 | + name: list.name, |
| 57 | + repositories: [...list.repositories], |
| 58 | + })), |
| 59 | + owners: [...config.databases.remote.owners], |
| 60 | + repositories: [...config.databases.remote.repositories], |
| 61 | + }, |
| 62 | + local: { |
| 63 | + lists: config.databases.local.lists.map((list) => ({ |
| 64 | + name: list.name, |
| 65 | + databases: list.databases.map((db) => ({ ...db })), |
| 66 | + })), |
| 67 | + databases: config.databases.local.databases.map((db) => ({ ...db })), |
| 68 | + }, |
52 | 69 | }, |
| 70 | + selected: config.selected ? { |
| 71 | + kind: config.selected.kind, |
| 72 | + value: config.selected.value, |
| 73 | + } : undefined |
53 | 74 | }; |
54 | 75 | } |
0 commit comments