|
1 | 1 | import { inherits } from 'node:util'; |
| 2 | +import { Sequelize, DataTypes, Utils } from 'sequelize'; |
2 | 3 | import { sparsevecType, sparsevecToSql, sparsevecFromSql } from '../utils/index.js'; |
3 | 4 |
|
4 | | -export function registerSparsevec(Sequelize) { |
5 | | - const DataTypes = Sequelize.DataTypes; |
6 | | - const PgTypes = DataTypes.postgres; |
7 | | - const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor; |
| 5 | +const PgTypes = DataTypes.postgres; |
| 6 | +const ABSTRACT = DataTypes.ABSTRACT.prototype.constructor; |
8 | 7 |
|
9 | | - class SPARSEVEC extends ABSTRACT { |
10 | | - constructor(dimensions) { |
11 | | - super(); |
12 | | - this._dimensions = dimensions; |
13 | | - } |
14 | | - |
15 | | - toSql() { |
16 | | - return sparsevecType(this._dimensions).toUpperCase(); |
17 | | - } |
| 8 | +class SPARSEVEC extends ABSTRACT { |
| 9 | + constructor(dimensions) { |
| 10 | + super(); |
| 11 | + this._dimensions = dimensions; |
| 12 | + } |
18 | 13 |
|
19 | | - _stringify(value) { |
20 | | - return sparsevecToSql(value); |
21 | | - } |
| 14 | + toSql() { |
| 15 | + return sparsevecType(this._dimensions).toUpperCase(); |
| 16 | + } |
22 | 17 |
|
23 | | - static parse(value) { |
24 | | - return sparsevecFromSql(value); |
25 | | - } |
| 18 | + _stringify(value) { |
| 19 | + return sparsevecToSql(value); |
26 | 20 | } |
27 | 21 |
|
28 | | - SPARSEVEC.prototype.key = SPARSEVEC.key = 'sparsevec'; |
| 22 | + static parse(value) { |
| 23 | + return sparsevecFromSql(value); |
| 24 | + } |
| 25 | +} |
29 | 26 |
|
30 | | - DataTypes.SPARSEVEC = Sequelize.Utils.classToInvokable(SPARSEVEC); |
31 | | - DataTypes.SPARSEVEC.types.postgres = ['sparsevec']; |
| 27 | +SPARSEVEC.prototype.key = SPARSEVEC.key = 'sparsevec'; |
32 | 28 |
|
33 | | - PgTypes.SPARSEVEC = function SPARSEVEC() { |
34 | | - if (!(this instanceof PgTypes.SPARSEVEC)) { |
35 | | - return new PgTypes.SPARSEVEC(); |
36 | | - } |
37 | | - DataTypes.SPARSEVEC.apply(this, arguments); |
38 | | - }; |
39 | | - inherits(PgTypes.SPARSEVEC, DataTypes.SPARSEVEC); |
40 | | - PgTypes.SPARSEVEC.parse = DataTypes.SPARSEVEC.parse; |
41 | | - PgTypes.SPARSEVEC.types = {postgres: ['sparsevec']}; |
42 | | - DataTypes.postgres.SPARSEVEC.key = 'sparsevec'; |
| 29 | +DataTypes.SPARSEVEC = Utils.classToInvokable(SPARSEVEC); |
| 30 | +DataTypes.SPARSEVEC.types.postgres = ['sparsevec']; |
43 | 31 |
|
44 | | - // for migrations |
45 | | - Sequelize.SPARSEVEC ??= DataTypes.SPARSEVEC; |
46 | | -} |
| 32 | +PgTypes.SPARSEVEC = function SPARSEVEC() { |
| 33 | + if (!(this instanceof PgTypes.SPARSEVEC)) { |
| 34 | + return new PgTypes.SPARSEVEC(); |
| 35 | + } |
| 36 | + DataTypes.SPARSEVEC.apply(this, arguments); |
| 37 | +}; |
| 38 | +inherits(PgTypes.SPARSEVEC, DataTypes.SPARSEVEC); |
| 39 | +PgTypes.SPARSEVEC.parse = DataTypes.SPARSEVEC.parse; |
| 40 | +PgTypes.SPARSEVEC.types = {postgres: ['sparsevec']}; |
| 41 | +DataTypes.postgres.SPARSEVEC.key = 'sparsevec'; |
| 42 | + |
| 43 | +// for migrations |
| 44 | +Sequelize.SPARSEVEC ??= DataTypes.SPARSEVEC; |
0 commit comments