Skip to content

Commit f5a7c79

Browse files
author
Renat Zubairov
authored
Merge pull request #2 from elasticio/string_default_type
String is now default type
2 parents 588acf7 + f2a4372 commit f5a7c79

File tree

4 files changed

+66
-6
lines changed

4 files changed

+66
-6
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ INSERT INTO
5555
Test2.dbo.Tweets
5656
(Lang, "Text", id, CreatedAt, Username, ScreenName)
5757
VALUES
58-
(@lang:string, @text:string, @id:bigint, @created_at:date, @username:string, @screenname:string)
58+
(@lang, @text, @id:bigint, @created_at:date, @username, @screenname)
5959
```
6060

6161
Following types are supported:
62-
* ``string``
62+
* ``string`` (also default type if type is omitted)
6363
* ``number`` (will be converted to MSSQL ``int``)
6464
* ``bigint``
6565
* ``boolean`` (will be converted to MSSQL ``bit``)

lib/actions/insert.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const cosql = require('co-mssql');
55

66
let pstmt;
77

8-
const VARS_REGEXP = /@([\w_$][\d\w_$]*:(string|boolean|date|number|bigint|float|real|money))/g;
8+
const VARS_REGEXP = /@([\w_$][\d\w_$]*(:(string|boolean|date|number|bigint|float|real|money))?)/g;
99

1010
/**
1111
* This function will be called during component intialization
@@ -31,6 +31,7 @@ function init(cfg) {
3131
const [placeholder, type] = tuple.split(':');
3232
const name = placeholder.substr(1);
3333
switch (type) {
34+
case undefined:
3435
case 'string':
3536
pstmt.input(name, cosql.NVarChar);
3637
break;
@@ -94,6 +95,15 @@ function getMetaModel(cfg, cb) {
9495
case 'bigint':
9596
jsType = 'number';
9697
break;
98+
case 'real':
99+
jsType = 'number';
100+
break;
101+
case 'float':
102+
jsType = 'number';
103+
break;
104+
case 'money':
105+
jsType = 'number';
106+
break;
97107
}
98108
fields[key.substr(1)] = {
99109
type: jsType

spec-integration/integration.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ describe('Integration test', () => {
3434
const cfg = {
3535
uri : process.env.MSSQL_URL,
3636
query: 'INSERT INTO Test2.dbo.Tweets (Lang, Retweeted, Favorited, "Text", id, CreatedAt, Username, ScreenName) '
37-
+ 'VALUES (@lang:string, @retweeted:boolean, @favorited:boolean, @text:string, @id:bigint, @created_at:date, @username:string, @screenname:string)'
37+
+ 'VALUES (@lang, @retweeted:boolean, @favorited:boolean, @text:string, @id:bigint, @created_at:date, @username, @screenname:string)'
3838
};
3939

4040
before(() => {

spec/metadata.spec.js

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const insert = require('../lib/actions/insert');
55
describe('Metadata test', () => {
66
const cfg = {
77
query: 'INSERT INTO Test2.dbo.Tweets (Lang, Retweeted, Favorited, "Text", id, CreatedAt, Username, ScreenName) '
8-
+ 'VALUES (@lang:string, @retweeted:boolean, @favorited:boolean, '
8+
+ 'VALUES (@lang:string, @retweeted:float, @money:money, @favorited:boolean, '
99
+ '@text:string, @id:bigint, @created_at:date, @username:string, @screenname:string)'
1010
};
1111

@@ -28,8 +28,11 @@ describe('Metadata test', () => {
2828
lang: {
2929
type: 'string'
3030
},
31+
money: {
32+
type: 'number'
33+
},
3134
retweeted: {
32-
type: 'string'
35+
type: 'number'
3336
},
3437
screenname: {
3538
type: 'string'
@@ -89,5 +92,52 @@ describe('Metadata test', () => {
8992
});
9093
});
9194

95+
it('should assume default metadata as stirng', (done) => {
96+
insert.getMetaModel({
97+
query: 'INSERT INTO Test2.dbo.Tweets '
98+
+ '(Lang, Retweeted, Favorited, "Text", id, CreatedAt, Username, ScreenName) '
99+
+ 'VALUES (@lang, @retweeted:float, @money:money, @favorited:boolean, '
100+
+ '@text, @id:bigint, @created_at:date, @username, @screenname)'
101+
}, (err, result) => {
102+
expect(err).to.be.null;
103+
expect(result).to.deep.equal({
104+
in: {
105+
properties: {
106+
created_at: {
107+
type: 'string'
108+
},
109+
favorited: {
110+
type: 'string'
111+
},
112+
id: {
113+
type: 'number'
114+
},
115+
lang: {
116+
type: 'string'
117+
},
118+
money: {
119+
type: 'number'
120+
},
121+
retweeted: {
122+
type: 'number'
123+
},
124+
screenname: {
125+
type: 'string'
126+
},
127+
text: {
128+
type: 'string'
129+
},
130+
username: {
131+
type: 'string'
132+
}
133+
},
134+
type: 'object'
135+
},
136+
out: {}
137+
}
138+
);
139+
done();
140+
});
141+
});
92142

93143
});

0 commit comments

Comments
 (0)