Skip to content

Commit 2eec681

Browse files
committed
Improved types
1 parent 0dbb230 commit 2eec681

9 files changed

Lines changed: 55 additions & 24 deletions

File tree

src/mikro-orm/halfvec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class HalfvecType extends Type {
2222
/**
2323
* @param {string} value
2424
* @param {Platform} platform
25-
* @return {number[]}
25+
* @return {?number[]}
2626
*/
2727
convertToJSValue(value, platform) {
2828
return halfvecFromSql(value);

src/mikro-orm/vector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class VectorType extends Type {
2222
/**
2323
* @param {string} value
2424
* @param {Platform} platform
25-
* @return {number[]}
25+
* @return {?number[]}
2626
*/
2727
convertToJSValue(value, platform) {
2828
return vectorFromSql(value);

src/sequelize/halfvec.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
// @ts-nocheck
2-
31
import { inherits } from 'node:util';
42
import { Sequelize, DataTypes, Utils } from 'sequelize';
53
import { halfvecType, halfvecToSql, halfvecFromSql } from '../utils.js';
64

5+
// @ts-ignore
76
const PgTypes = DataTypes.postgres;
87
const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor;
98

109
class HALFVEC extends ABSTRACT {
10+
/**
11+
* @param {number} [dimensions]
12+
*/
1113
constructor(dimensions) {
1214
super();
1315
this._dimensions = dimensions;
@@ -17,30 +19,42 @@ class HALFVEC extends ABSTRACT {
1719
return halfvecType(this._dimensions).toUpperCase();
1820
}
1921

22+
/**
23+
* @param {?number[]} value
24+
*/
2025
_stringify(value) {
2126
return halfvecToSql(value);
2227
}
2328

29+
/**
30+
* @param {?string} value
31+
*/
2432
static parse(value) {
2533
return halfvecFromSql(value);
2634
}
2735
}
2836

2937
HALFVEC.prototype.key = HALFVEC.key = 'halfvec';
3038

39+
// @ts-ignore
3140
DataTypes.HALFVEC = Utils.classToInvokable(HALFVEC);
41+
// @ts-ignore
3242
DataTypes.HALFVEC.types.postgres = ['halfvec'];
3343

3444
PgTypes.HALFVEC = function HALFVEC() {
3545
if (!(this instanceof PgTypes.HALFVEC)) {
3646
return new PgTypes.HALFVEC();
3747
}
48+
// @ts-ignore
3849
DataTypes.HALFVEC.apply(this, arguments);
3950
};
4051
inherits(PgTypes.HALFVEC, DataTypes.HALFVEC);
52+
// @ts-ignore
4153
PgTypes.HALFVEC.parse = DataTypes.HALFVEC.parse;
4254
PgTypes.HALFVEC.types = {postgres: ['halfvec']};
55+
// @ts-ignore
4356
DataTypes.postgres.HALFVEC.key = 'halfvec';
4457

4558
// for migrations
59+
// @ts-ignore
4660
Sequelize.HALFVEC ??= DataTypes.HALFVEC;

src/sequelize/sparsevec.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
// @ts-nocheck
2-
31
import { inherits } from 'node:util';
42
import { Sequelize, DataTypes, Utils } from 'sequelize';
53
import { sparsevecType, sparsevecToSql, sparsevecFromSql } from '../utils.js';
64

5+
/** @import { SparseVector } from '../index.js' */
6+
7+
// @ts-ignore
78
const PgTypes = DataTypes.postgres;
89
const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor;
910

1011
class SPARSEVEC extends ABSTRACT {
12+
/**
13+
* @param {number} [dimensions]
14+
*/
1115
constructor(dimensions) {
1216
super();
1317
this._dimensions = dimensions;
@@ -17,30 +21,42 @@ class SPARSEVEC extends ABSTRACT {
1721
return sparsevecType(this._dimensions).toUpperCase();
1822
}
1923

24+
/**
25+
* @param {?SparseVector} value
26+
*/
2027
_stringify(value) {
2128
return sparsevecToSql(value);
2229
}
2330

31+
/**
32+
* @param {?string} value
33+
*/
2434
static parse(value) {
2535
return sparsevecFromSql(value);
2636
}
2737
}
2838

2939
SPARSEVEC.prototype.key = SPARSEVEC.key = 'sparsevec';
3040

41+
// @ts-ignore
3142
DataTypes.SPARSEVEC = Utils.classToInvokable(SPARSEVEC);
43+
// @ts-ignore
3244
DataTypes.SPARSEVEC.types.postgres = ['sparsevec'];
3345

3446
PgTypes.SPARSEVEC = function SPARSEVEC() {
3547
if (!(this instanceof PgTypes.SPARSEVEC)) {
3648
return new PgTypes.SPARSEVEC();
3749
}
50+
// @ts-ignore
3851
DataTypes.SPARSEVEC.apply(this, arguments);
3952
};
4053
inherits(PgTypes.SPARSEVEC, DataTypes.SPARSEVEC);
54+
// @ts-ignore
4155
PgTypes.SPARSEVEC.parse = DataTypes.SPARSEVEC.parse;
4256
PgTypes.SPARSEVEC.types = {postgres: ['sparsevec']};
57+
// @ts-ignore
4358
DataTypes.postgres.SPARSEVEC.key = 'sparsevec';
4459

4560
// for migrations
61+
// @ts-ignore
4662
Sequelize.SPARSEVEC ??= DataTypes.SPARSEVEC;

src/sequelize/vector.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
// @ts-nocheck
2-
31
import { inherits } from 'node:util';
42
import { Sequelize, DataTypes, Utils } from 'sequelize';
53
import { vectorType, vectorToSql, vectorFromSql } from '../utils.js';
64

5+
// @ts-ignore
76
const PgTypes = DataTypes.postgres;
87
const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor;
98

109
class VECTOR extends ABSTRACT {
10+
/**
11+
* @param {number} [dimensions]
12+
*/
1113
constructor(dimensions) {
1214
super();
1315
this._dimensions = dimensions;
@@ -17,30 +19,42 @@ class VECTOR extends ABSTRACT {
1719
return vectorType(this._dimensions).toUpperCase();
1820
}
1921

22+
/**
23+
* @param {?number[]} value
24+
*/
2025
_stringify(value) {
2126
return vectorToSql(value);
2227
}
2328

29+
/**
30+
* @param {?string} value
31+
*/
2432
static parse(value) {
2533
return vectorFromSql(value);
2634
}
2735
}
2836

2937
VECTOR.prototype.key = VECTOR.key = 'vector';
3038

39+
// @ts-ignore
3140
DataTypes.VECTOR = Utils.classToInvokable(VECTOR);
41+
// @ts-ignore
3242
DataTypes.VECTOR.types.postgres = ['vector'];
3343

3444
PgTypes.VECTOR = function VECTOR() {
3545
if (!(this instanceof PgTypes.VECTOR)) {
3646
return new PgTypes.VECTOR();
3747
}
48+
// @ts-ignore
3849
DataTypes.VECTOR.apply(this, arguments);
3950
};
4051
inherits(PgTypes.VECTOR, DataTypes.VECTOR);
52+
// @ts-ignore
4153
PgTypes.VECTOR.parse = DataTypes.VECTOR.parse;
4254
PgTypes.VECTOR.types = {postgres: ['vector']};
55+
// @ts-ignore
4356
DataTypes.postgres.VECTOR.key = 'vector';
4457

4558
// for migrations
59+
// @ts-ignore
4660
Sequelize.VECTOR ??= DataTypes.VECTOR;

src/utils.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
import { format } from 'node:util';
22
import { SparseVector } from './sparse-vector.js';
33

4-
/**
5-
* @overload
6-
* @param {string} value
7-
* @returns {number[]}
8-
*/
9-
10-
/**
11-
* @overload
12-
* @param {null} value
13-
* @returns {null}
14-
*/
15-
164
/**
175
* @param {?string} value
186
* @returns {?number[]}

types/mikro-orm/halfvec.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export class HalfvecType extends Type<number[] | null, string | null> {
22
constructor();
33
convertToDatabaseValue(value: number[] | null, platform: Platform): string | null;
4-
convertToJSValue(value: string, platform: Platform): number[];
4+
convertToJSValue(value: string, platform: Platform): number[] | null;
55
getColumnType(prop: any, platform: Platform): string;
66
}
77
import { Type } from '@mikro-orm/core';

types/mikro-orm/vector.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
export class VectorType extends Type<number[] | null, string | null> {
22
constructor();
33
convertToDatabaseValue(value: number[] | null, platform: Platform): string | null;
4-
convertToJSValue(value: string, platform: Platform): number[];
4+
convertToJSValue(value: string, platform: Platform): number[] | null;
55
getColumnType(prop: any, platform: Platform): string;
66
}
77
import { Type } from '@mikro-orm/core';

types/utils.d.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
export function vectorFromSql(value: string): number[];
2-
export function vectorFromSql(value: null): null;
1+
export function vectorFromSql(value: string | null): number[] | null;
32
export function vectorToSql(value: number[] | null): string | null;
43
export function sparsevecFromSql(value: string | null): SparseVector | null;
54
export function sparsevecToSql(value: SparseVector | null): string | null;

0 commit comments

Comments
 (0)