Skip to content

Commit f3deda2

Browse files
Merge pull request #53 from daimor/master
Support for filter
2 parents bb17fe3 + 0aab186 commit f3deda2

File tree

7 files changed

+48
-47
lines changed

7 files changed

+48
-47
lines changed

.github/workflows/main.yml

+18-35
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
# os: [ubuntu-latest, windows-latest, macOS-latest]
2323
os: [ubuntu-latest]
2424
steps:
25-
- uses: actions/checkout@v2
25+
- uses: actions/checkout@v4
2626
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
2727
- name: Set an output
2828
id: set-version
@@ -46,18 +46,14 @@ jobs:
4646
echo $VERSION > .version
4747
echo $NAME > .name
4848
- name: Use Node.js
49-
uses: actions/setup-node@v2
49+
uses: actions/setup-node@v4
5050
with:
51-
node-version: 14
51+
node-version: 20
5252
- run: npm install
5353
- name: lint
5454
if: runner.os == 'Linux'
5555
run: npm run lint
5656
- run: npm run compile
57-
- name: npm test
58-
uses: GabrielBB/[email protected]
59-
with:
60-
run: npm run test
6157
- name: Build package
6258
if: runner.os == 'Linux'
6359
run: |
@@ -79,7 +75,7 @@ jobs:
7975
runs-on: ubuntu-latest
8076
needs: build
8177
steps:
82-
- uses: actions/download-artifact@v2
78+
- uses: actions/download-artifact@v4
8379
with:
8480
name: meta
8581
path: .
@@ -90,48 +86,35 @@ jobs:
9086
set -x
9187
echo ::set-output name=version::`cat .version`
9288
echo ::set-output name=name::`cat .name`
93-
- uses: actions/download-artifact@v2
89+
- uses: actions/download-artifact@v4
9490
with:
9591
name: ${{ steps.set-version.outputs.name }}.vsix
96-
- name: Create Release
97-
id: create_release
98-
uses: actions/create-release@v1
99-
if: runner.os == 'Linux'
100-
env:
101-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102-
with:
103-
tag_name: v${{ steps.set-version.outputs.version }}
104-
release_name: v${{ steps.set-version.outputs.version }}
105-
prerelease: ${{ github.event_name != 'release' }}
106-
body: |
107-
Changes in this release
108-
${{ steps.set-version.outputs.changelog }}
10992
- name: Upload Release Asset
11093
id: upload-release-asset
111-
uses: actions/upload-release-asset@v1
94+
uses: softprops/action-gh-release@v2
11295
if: runner.os == 'Linux'
11396
env:
11497
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
11598
with:
116-
upload_url: ${{ steps.create_release.outputs.upload_url }}
117-
asset_path: ${{ steps.set-version.outputs.name }}.vsix
118-
asset_name: ${{ steps.set-version.outputs.name }}.vsix
119-
asset_content_type: application/zip
99+
tag_name: v${{ steps.set-version.outputs.version }}
100+
prerelease: ${{ github.event_name != 'release' }}
101+
files: ${{ steps.set-version.outputs.name }}.vsix
102+
token: ${{ secrets.GITHUB_TOKEN }}
120103
publish:
121104
if: github.event_name == 'release'
122105
runs-on: ubuntu-latest
123106
needs: build
124107
steps:
125-
- uses: actions/checkout@v2
108+
- uses: actions/checkout@v4
126109
with:
127110
ref: master
128111
token: ${{ secrets.GITHUB_TOKEN }}
129-
- uses: actions/download-artifact@v2
112+
- uses: actions/download-artifact@v4
130113
with:
131114
name: meta
132115
path: .
133116
- name: Use Node.js
134-
uses: actions/setup-node@v2
117+
uses: actions/setup-node@v4
135118
with:
136119
node-version: 14
137120
- name: Prepare build
@@ -155,15 +138,15 @@ jobs:
155138
npx vsce package -o ${{ steps.set-version.outputs.name }}.vsix
156139
- name: Upload Release Asset
157140
id: upload-release-asset
158-
uses: actions/upload-release-asset@v1
141+
uses: softprops/action-gh-release@v2
159142
if: runner.os == 'Linux'
160143
env:
161144
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
162145
with:
163-
upload_url: ${{ github.event.release.upload_url }}
164-
asset_path: ${{ steps.set-version.outputs.name }}.vsix
165-
asset_name: ${{ steps.set-version.outputs.name }}.vsix
166-
asset_content_type: application/zip
146+
tag_name: v${{ steps.set-version.outputs.version }}
147+
prerelease: ${{ github.event_name != 'release' }}
148+
files: ${{ steps.set-version.outputs.name }}.vsix
149+
token: ${{ secrets.GITHUB_TOKEN }}
167150
- name: Publish to VSCode Marketplace
168151
run: |
169152
[ -n "${{ secrets.VSCE_TOKEN }}" ] && \

.vscode/launch.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
"${workspaceFolder}/test/project.code-workspace",
1010
"--extensionDevelopmentPath=${workspaceFolder}"
1111
],
12+
"sourceMaps": true,
1213
"outFiles": [
13-
"${workspaceFolder}/out/**/*.js"
14+
"${workspaceFolder}/dist/**/*.js"
1415
],
1516
"preLaunchTask": "npm: webpack"
1617
}

connection.schema.json

+9
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@
3737
"title": "Show system items?",
3838
"type": "boolean",
3939
"default": false
40+
},
41+
"filter": {
42+
"title": "Filter",
43+
"type": "string",
44+
"examples": [
45+
"'Ens*",
46+
"'HS*"
47+
],
48+
"description": "* 0 or more characters, _ any one character, ' NOT pattern"
4049
}
4150
},
4251
"dependencies": {

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
"compile": "tsc -p ./",
3131
"watch": "tsc -watch -p ./",
3232
"package": "vsce package -o sqltools-intersystems-driver.vsix",
33-
"lint": ""
33+
"lint": "",
34+
"test": ""
3435
},
3536
"keywords": [
3637
"intersystems-iris-driver",
@@ -48,7 +49,7 @@
4849
"mtxr.sqltools"
4950
],
5051
"activationEvents": [
51-
"*",
52+
"onStartupFinished",
5253
"onLanguage:sql",
5354
"onCommand:sqltools.*"
5455
],

src/ls/driver.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default class IRISDriver extends AbstractDriver<IRISdb, DriverOptions> im
1313

1414
queries: IQueries = queries;
1515
private showSystem = false;
16+
private filter = "";
1617

1718
public async open() {
1819
if (this.connection) {
@@ -22,6 +23,7 @@ export default class IRISDriver extends AbstractDriver<IRISdb, DriverOptions> im
2223
const { namespace } = this.credentials;
2324
let config: IRISDirect;
2425
this.showSystem = this.credentials.showSystem || false;
26+
this.filter = this.credentials.filter || "";
2527

2628
if (this.credentials.serverName) {
2729
throw new Error("not supported");
@@ -113,6 +115,7 @@ export default class IRISDriver extends AbstractDriver<IRISdb, DriverOptions> im
113115

114116
private async getSchemas({ item }: Arg0<IConnectionDriver['getChildrenForItem']>) {
115117
item['showSystem'] = this.showSystem;
118+
item['filter'] = this.filter;
116119

117120
switch (item.childType) {
118121
case ContextValue.TABLE:
@@ -127,6 +130,7 @@ export default class IRISDriver extends AbstractDriver<IRISdb, DriverOptions> im
127130

128131
private async getChildrenForSchema({ item }: Arg0<IConnectionDriver['getChildrenForItem']>) {
129132
item['showSystem'] = this.showSystem;
133+
item['filter'] = this.filter;
130134

131135
switch (item.childType) {
132136
case ContextValue.TABLE:
@@ -151,11 +155,11 @@ export default class IRISDriver extends AbstractDriver<IRISdb, DriverOptions> im
151155
case ContextValue.DATABASE:
152156
// Syntatically, a schema in IRIS SQL resembles a database in other databases.
153157
// That's the simplest way to adapt IRIS SQL to the generic Hue parser vscode-sqltools uses.
154-
return this.queryResults(this.queries.searchEverything({ search, showSystem: this.showSystem }));
158+
return this.queryResults(this.queries.searchEverything({ search, showSystem: this.showSystem, filter: this.filter }));
155159
case ContextValue.TABLE:
156160
case ContextValue.FUNCTION:
157161
case ContextValue.VIEW:
158-
const searchParams = { search, showSystem: this.showSystem, itemType, ...extraParams };
162+
const searchParams = { search, showSystem: this.showSystem, filter: this.filter, itemType, ...extraParams };
159163
if (extraParams['database']) {
160164
searchParams['schema'] = extraParams['database'];
161165
}

src/ls/queries.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ ValueColumn[ContextValue.FUNCTION] = "PROCEDURE_NAME";
1414

1515
interface ISchema extends NSDatabase.ISchema {
1616
showSystem: boolean;
17+
filter: string;
1718
}
1819

1920
const describeTable: IQueries['describeTable'] = queryFactory`
@@ -173,7 +174,7 @@ DISTINCT BY(SCHEMA_NAME)
173174
'${ContextValue.SCHEMA}' as "type",
174175
'${type}' as "childType",
175176
'folder' as iconId
176-
FROM ${Functions[type]} (${p => p.showSystem ? 1 : 0})
177+
FROM ${Functions[type]} (${p => p.showSystem ? 1 : 0}, '${p => (p.filter && p.filter != "") ? `${p.filter.replace("'", "''")}` : "*"}')
177178
`;
178179

179180
const fetchTableSchemas = fetchTypedSchemas(ContextValue.TABLE);

test/project.code-workspace

+8-6
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,18 @@
4242
"username": "_SYSTEM"
4343
},
4444
{
45-
"askForPassword": false,
45+
"namespace": "USER",
4646
"connectionMethod": "Server and Port",
47+
"showSystem": false,
48+
"filter": "'Ens*",
49+
"previewLimit": 50,
50+
"server": "localhost",
51+
"port": 52773,
52+
"https": false,
53+
"askForPassword": false,
4754
"driver": "InterSystems IRIS",
4855
"name": "InterSystems IRIS",
49-
"namespace": "USER",
5056
"password": "SYS",
51-
"port": 52773,
52-
"previewLimit": 50,
53-
"server": "localhost",
54-
"showSystem": true,
5557
"username": "_SYSTEM"
5658
}
5759
]

0 commit comments

Comments
 (0)