Skip to content

Commit 846eda5

Browse files
authored
Merge pull request #1761 from github/nora/add-selected-state-to-db-config
Add selected to config
2 parents 796611d + a012d80 commit 846eda5

File tree

10 files changed

+406
-299
lines changed

10 files changed

+406
-299
lines changed

extensions/ql-vscode/src/databases/db-config-store.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,17 @@ export class DbConfigStore extends DisposableObject {
103103

104104
private createEmptyConfig(): DbConfig {
105105
return {
106-
remote: {
107-
repositoryLists: [],
108-
owners: [],
109-
repositories: [],
110-
},
111-
local: {
112-
lists: [],
113-
databases: [],
114-
},
106+
databases: {
107+
remote: {
108+
repositoryLists: [],
109+
owners: [],
110+
repositories: [],
111+
},
112+
local: {
113+
lists: [],
114+
databases: [],
115+
},
116+
}
115117
};
116118
}
117119
}

extensions/ql-vscode/src/databases/db-config.ts

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,25 @@
11
// Contains models for the data we want to store in the database config
22

33
export interface DbConfig {
4+
databases: DbConfigDatabases;
5+
selected?: SelectedDbItem;
6+
}
7+
8+
export interface DbConfigDatabases {
49
remote: RemoteDbConfig;
510
local: LocalDbConfig;
611
}
712

13+
export interface SelectedDbItem {
14+
kind: SelectedDbItemKind;
15+
value: string;
16+
}
17+
18+
export enum SelectedDbItemKind {
19+
ConfigDefined = 'configDefined',
20+
RemoteSystemDefinedList = 'remoteSystemDefinedList',
21+
}
22+
823
export interface RemoteDbConfig {
924
repositoryLists: RemoteRepositoryList[];
1025
owners: string[];
@@ -35,20 +50,26 @@ export interface LocalDatabase {
3550

3651
export function cloneDbConfig(config: DbConfig): DbConfig {
3752
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+
},
5269
},
70+
selected: config.selected ? {
71+
kind: config.selected.kind,
72+
value: config.selected.value,
73+
} : undefined
5374
};
5475
}

extensions/ql-vscode/src/databases/db-tree-creator.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ export function createRemoteTree(dbConfig: DbConfig): RootRemoteDbItem {
1616
createSystemDefinedList(1000)
1717
];
1818

19-
const userDefinedRepoLists = dbConfig.remote.repositoryLists.map(createUserDefinedList);
20-
const owners = dbConfig.remote.owners.map(createOwnerItem);
21-
const repos = dbConfig.remote.repositories.map(createRepoItem);
19+
const userDefinedRepoLists = dbConfig.databases.remote.repositoryLists.map(createUserDefinedList);
20+
const owners = dbConfig.databases.remote.owners.map(createOwnerItem);
21+
const repos = dbConfig.databases.remote.repositories.map(createRepoItem);
2222

2323
return {
2424
kind: DbItemKind.RootRemote,

extensions/ql-vscode/src/vscode-tests/minimal-workspace/databases/db-panel.test.ts

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,16 @@ describe('db panel', async () => {
6565

6666
it('should render default local and remote nodes when the config is empty', async () => {
6767
const dbConfig: DbConfig = {
68-
remote: {
69-
repositoryLists: [],
70-
owners: [],
71-
repositories: []
72-
},
73-
local: {
74-
lists: [],
75-
databases: []
68+
databases: {
69+
remote: {
70+
repositoryLists: [],
71+
owners: [],
72+
repositories: []
73+
},
74+
local: {
75+
lists: [],
76+
databases: []
77+
},
7678
},
7779
};
7880

@@ -111,30 +113,32 @@ describe('db panel', async () => {
111113

112114
it('should render remote repository list nodes', async () => {
113115
const dbConfig: DbConfig = {
114-
remote: {
115-
repositoryLists: [
116-
{
117-
name: 'my-list-1',
118-
repositories: [
119-
'owner1/repo1',
120-
'owner1/repo2'
121-
]
122-
},
123-
{
124-
name: 'my-list-2',
125-
repositories: [
126-
'owner1/repo1',
127-
'owner2/repo1',
128-
'owner2/repo2'
129-
]
130-
},
131-
],
132-
owners: [],
133-
repositories: []
134-
},
135-
local: {
136-
lists: [],
137-
databases: []
116+
databases: {
117+
remote: {
118+
repositoryLists: [
119+
{
120+
name: 'my-list-1',
121+
repositories: [
122+
'owner1/repo1',
123+
'owner1/repo2'
124+
]
125+
},
126+
{
127+
name: 'my-list-2',
128+
repositories: [
129+
'owner1/repo1',
130+
'owner2/repo1',
131+
'owner2/repo2'
132+
]
133+
},
134+
],
135+
owners: [],
136+
repositories: []
137+
},
138+
local: {
139+
lists: [],
140+
databases: []
141+
},
138142
},
139143
};
140144

@@ -163,14 +167,16 @@ describe('db panel', async () => {
163167

164168
it('should render owner list nodes', async () => {
165169
const dbConfig: DbConfig = {
166-
remote: {
167-
repositoryLists: [],
168-
owners: ['owner1', 'owner2'],
169-
repositories: []
170-
},
171-
local: {
172-
lists: [],
173-
databases: []
170+
databases: {
171+
remote: {
172+
repositoryLists: [],
173+
owners: ['owner1', 'owner2'],
174+
repositories: []
175+
},
176+
local: {
177+
lists: [],
178+
databases: []
179+
},
174180
},
175181
};
176182

@@ -196,14 +202,16 @@ describe('db panel', async () => {
196202

197203
it('should render repository nodes', async () => {
198204
const dbConfig: DbConfig = {
199-
remote: {
200-
repositoryLists: [],
201-
owners: [],
202-
repositories: ['owner1/repo1', 'owner1/repo2']
203-
},
204-
local: {
205-
lists: [],
206-
databases: []
205+
databases: {
206+
remote: {
207+
repositoryLists: [],
208+
owners: [],
209+
repositories: ['owner1/repo1', 'owner1/repo2']
210+
},
211+
local: {
212+
lists: [],
213+
databases: []
214+
},
207215
},
208216
};
209217

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"databases": {
3+
"remote": {
4+
"repositoryLists": [],
5+
"owners": [],
6+
"repositories": []
7+
},
8+
"local": {
9+
"lists": [],
10+
"databases": []
11+
}
12+
}
13+
}
Lines changed: 48 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,52 @@
11
{
2-
"remote": {
3-
"repositoryLists": [
4-
{
5-
"name": "repoList1",
6-
"repositories": ["foo/bar", "foo/baz"]
7-
}
8-
],
9-
"owners": [],
10-
"repositories": ["owner/repo1", "owner/repo2", "owner/repo3"]
2+
"databases": {
3+
"remote": {
4+
"repositoryLists": [
5+
{
6+
"name": "repoList1",
7+
"repositories": ["foo/bar", "foo/baz"]
8+
}
9+
],
10+
"owners": [],
11+
"repositories": ["owner/repo1", "owner/repo2", "owner/repo3"]
12+
},
13+
"local": {
14+
"lists": [
15+
{
16+
"name": "localList1",
17+
"databases": [
18+
{
19+
"name": "foo/bar",
20+
"dateAdded": 1668096745193,
21+
"language": "go",
22+
"storagePath": "/path/to/database/"
23+
}
24+
]
25+
},
26+
{
27+
"name": "localList2",
28+
"databases": [
29+
{
30+
"name": "foo/baz",
31+
"dateAdded": 1668096760848,
32+
"language": "javascript",
33+
"storagePath": "/path/to/database/"
34+
}
35+
]
36+
}
37+
],
38+
"databases": [
39+
{
40+
"name": "example-db",
41+
"dateAdded": 1668096927267,
42+
"language": "ruby",
43+
"storagePath": "/path/to/database/"
44+
}
45+
]
46+
}
1147
},
12-
"local": {
13-
"lists": [
14-
{
15-
"name": "localList1",
16-
"databases": [
17-
{
18-
"name": "foo/bar",
19-
"dateAdded": 1668096745193,
20-
"language": "go",
21-
"storagePath": "/path/to/database/"
22-
}
23-
]
24-
},
25-
{
26-
"name": "localList2",
27-
"databases": [
28-
{
29-
"name": "foo/baz",
30-
"dateAdded": 1668096760848,
31-
"language": "javascript",
32-
"storagePath": "/path/to/database/"
33-
}
34-
]
35-
}
36-
],
37-
"databases": [
38-
{
39-
"name": "example-db",
40-
"dateAdded": 1668096927267,
41-
"language": "ruby",
42-
"storagePath": "/path/to/database/"
43-
}
44-
]
48+
"selected": {
49+
"kind": "configDefined",
50+
"value": "path.to.database"
4551
}
4652
}

0 commit comments

Comments
 (0)