duckdb-tinyorm 1.0.9 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,43 @@
1
+ name: Publish npm Package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*.*.*' # This triggers the action only when a tag with the format 'vX.X.X' is pushed
7
+
8
+ jobs:
9
+ build:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - name: Checkout repository
14
+ uses: actions/checkout@v3
15
+
16
+ - name: Set up Node.js
17
+ uses: actions/setup-node@v3
18
+ with:
19
+ node-version: '22' # Use the version you prefer
20
+ cache: 'npm'
21
+
22
+ - name: Install dependencies
23
+ run: npm install
24
+
25
+ - name: Run tests
26
+ run: npm test
27
+
28
+ - name: Build the library
29
+ run: npm run build
30
+
31
+ - name: Publish to npm
32
+ env:
33
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
34
+ run: npm publish
35
+ if: startsWith(github.ref, 'refs/tags/v')
36
+
37
+ - name: Bump version
38
+ run: |
39
+ npm version patch
40
+ git config user.name "Naim Sulejmani"
41
+ git config user.email "naim.sulejmani@gmail.com"
42
+ git push origin HEAD --tags
43
+
package/README.md CHANGED
@@ -1,71 +1,82 @@
1
- # DuckDB Tiny ORM
2
-
3
- Usage:
4
- ```typescript
5
-
6
- import { DuckDbRepository, Entity, Repository, DataTypeDecorator, BaseRepository, Id } from 'duckdb-tinyorm';
7
-
8
- import 'reflect-metadata';
9
-
10
- @Entity
11
- export class Amenity {
12
-
13
- @DataTypeDecorator('VARCHAR')
14
- Name?: string = null;
15
-
16
- @Id()
17
- @DataTypeDecorator('VARCHAR')
18
- Type?: string = null;
19
-
20
- @DataTypeDecorator('VARCHAR')
21
- PropertyId?: string = null;
22
-
23
- @DataTypeDecorator('VARCHAR')
24
- Color?: string = null;
25
-
26
- @DataTypeDecorator('INT')
27
- Year?: number = null;
28
-
29
- }
30
-
31
- @Repository(Amenity)
32
- class AmenityRepository extends BaseRepository<Amenity, string> {
33
- constructor() {
34
- super(DuckDbRepository.getInstances());
35
- }
36
- }
37
-
38
-
39
- async function test() {
40
- const amenityRepository = new AmenityRepository();
41
-
42
- const amenity = new Amenity();
43
- amenity.Name = "Name1";
44
- amenity.PropertyId = "1";
45
- amenity.Type = "Type1";
46
- amenity.Color = "Green";
47
- amenity.Year = 2022;
48
-
49
-
50
- const amenity1= new Amenity();
51
- amenity1.Name = "Name2";
52
- amenity1.PropertyId = "2";
53
- amenity1.Type = "Type2";
54
- amenity.Color = "Green";
55
- amenity.Year = 2022;
56
-
57
- await amenityRepository.save(amenity);
58
- await amenityRepository.save(amenity1);
59
- const result = await amenityRepository.findAll();
60
- console.table(result);
61
- const amenityFound:Amenity = await amenityRepository.findById("Type1");
62
- console.info(amenityFound);
63
- const amenityFound1: Amenity = await amenityRepository.findById("Type1");
64
- console.info(amenityFound1);
65
-
66
- const amenities = await amenityRepository.findBy(amenity, ["Color"]);
67
- console.table(amenities);
68
- }
69
-
70
- test();
71
- ```
1
+ # DuckDB Tiny ORM
2
+
3
+ Usage:
4
+
5
+ ```typescript
6
+ import 'reflect-metadata';
7
+ import { DuckDbRepository, Entity, Repository, DataTypeDecorator, BaseRepository, Id ,DuckDbLocation, DuckDbConfig } from 'duckdb-tinyorm';
8
+
9
+
10
+
11
+ //create instance in memory or use File, if File is specfied need to specify the filename
12
+ const duckDbRepository: DuckDbRepository = DuckDbRepository.getInstances({name: 'default', location: DuckDbLocation.Memory, filename: undefined})
13
+
14
+ @Entity
15
+ export class Subject {
16
+
17
+ constructor(id: string = "", name?: string, description?: string, year: number = (new Date()).getFullYear()) {
18
+ this.Id = id;
19
+ this.Name = name;
20
+ this.Description = description;
21
+ this.Year = year;
22
+ }
23
+
24
+ @Id()
25
+ @DataTypeDecorator('VARCHAR')
26
+ Id: string ;
27
+
28
+ @DataTypeDecorator('VARCHAR')
29
+ Name?: string;
30
+
31
+
32
+ @DataTypeDecorator('VARCHAR')
33
+ Description?: string;
34
+
35
+
36
+ @DataTypeDecorator('INT')
37
+ Year: number;
38
+
39
+ }
40
+
41
+ @Repository(Subject)
42
+ class SubjectRepository extends BaseRepository<Subject, string> {
43
+ constructor() {
44
+ super(duckDbRepository);
45
+ }
46
+ }
47
+
48
+
49
+ async function test() {
50
+ const subjectRepository = new SubjectRepository();
51
+
52
+ const subject1 = new Subject();
53
+ subject1.Name = "Java Basic";
54
+ subject1.Description = "Java Basic";
55
+ subject1.Year = 2024;
56
+ subject1.Id = "JB"
57
+
58
+
59
+ const subject2 = new Subject();
60
+ subject2.Name = "Java OOP";
61
+ subject2.Description = "Java Object Oriented Programming";
62
+ subject2.Year = 2024;
63
+ subject2.Id = "OOP"
64
+
65
+
66
+ await subjectRepository.save(subject1);
67
+ await subjectRepository.save(subject2);
68
+ const result = await subjectRepository.findAll();
69
+ console.table(result);
70
+ const subjectFound1: Subject = await subjectRepository.findById("JB");
71
+ console.info(subjectFound1);
72
+ const subjectFound2: Subject = await subjectRepository.findById("OOP");
73
+ console.info(subjectFound2);
74
+
75
+ await subjectRepository.removeById("JB");
76
+
77
+ const amenities = await subjectRepository.findBy({ Year: 2024 }, ["Year"]);
78
+ console.table(amenities);
79
+ }
80
+
81
+ test();
82
+ ```
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import 'reflect-metadata';
2
2
  import { DataTypeDecorator, Entity, Id, Repository, Unique } from "./constants/data-type.decorator";
3
3
  import { BaseRepository } from "./repositories/base.repository";
4
- import { DuckDbRepository } from "./repositories/duckdb.repository";
4
+ import { DuckDbRepository, DuckDbConfig, DuckDbLocation } from './repositories/duckdb.repository';
5
5
  import { IRepository } from './repositories/base.interface';
6
- export { DataTypeDecorator, Id, Unique, BaseRepository, Entity, Repository, DuckDbRepository, IRepository };
6
+ import { getClassName, getTableName, getPrimaryId, generateCreateTableStatement, generateInsertIntoStatement } from './helpers/table-util.helper';
7
+ export { DataTypeDecorator, Id, Unique, BaseRepository, Entity, Repository, DuckDbRepository, IRepository, DuckDbConfig, DuckDbLocation, getClassName, getTableName, getPrimaryId, generateCreateTableStatement, generateInsertIntoStatement };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DuckDbRepository = exports.Repository = exports.Entity = exports.BaseRepository = exports.Unique = exports.Id = exports.DataTypeDecorator = void 0;
3
+ exports.generateInsertIntoStatement = exports.generateCreateTableStatement = exports.getPrimaryId = exports.getTableName = exports.getClassName = exports.DuckDbLocation = exports.DuckDbRepository = exports.Repository = exports.Entity = exports.BaseRepository = exports.Unique = exports.Id = exports.DataTypeDecorator = void 0;
4
4
  require("reflect-metadata");
5
5
  const data_type_decorator_1 = require("./constants/data-type.decorator");
6
6
  Object.defineProperty(exports, "DataTypeDecorator", { enumerable: true, get: function () { return data_type_decorator_1.DataTypeDecorator; } });
@@ -12,4 +12,11 @@ const base_repository_1 = require("./repositories/base.repository");
12
12
  Object.defineProperty(exports, "BaseRepository", { enumerable: true, get: function () { return base_repository_1.BaseRepository; } });
13
13
  const duckdb_repository_1 = require("./repositories/duckdb.repository");
14
14
  Object.defineProperty(exports, "DuckDbRepository", { enumerable: true, get: function () { return duckdb_repository_1.DuckDbRepository; } });
15
+ Object.defineProperty(exports, "DuckDbLocation", { enumerable: true, get: function () { return duckdb_repository_1.DuckDbLocation; } });
16
+ const table_util_helper_1 = require("./helpers/table-util.helper");
17
+ Object.defineProperty(exports, "getClassName", { enumerable: true, get: function () { return table_util_helper_1.getClassName; } });
18
+ Object.defineProperty(exports, "getTableName", { enumerable: true, get: function () { return table_util_helper_1.getTableName; } });
19
+ Object.defineProperty(exports, "getPrimaryId", { enumerable: true, get: function () { return table_util_helper_1.getPrimaryId; } });
20
+ Object.defineProperty(exports, "generateCreateTableStatement", { enumerable: true, get: function () { return table_util_helper_1.generateCreateTableStatement; } });
21
+ Object.defineProperty(exports, "generateInsertIntoStatement", { enumerable: true, get: function () { return table_util_helper_1.generateInsertIntoStatement; } });
15
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,yEAAoG;AAQhG,kGARK,uCAAiB,OAQL;AAIjB,uFAZwB,4BAAM,OAYxB;AAHN,mFATgC,wBAAE,OAShC;AAIF,2FAboC,gCAAU,OAapC;AAHV,uFAVgD,4BAAM,OAUhD;AATV,oEAAgE;AAU5D,+FAVK,gCAAc,OAUL;AATlB,wEAAoE;AAYhE,iGAZK,oCAAgB,OAYL"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,yEAAoG;AAShG,kGATK,uCAAiB,OASL;AAIjB,uFAbwB,4BAAM,OAaxB;AAHN,mFAVgC,wBAAE,OAUhC;AAIF,2FAdoC,gCAAU,OAcpC;AAHV,uFAXgD,4BAAM,OAWhD;AAVV,oEAAgE;AAW5D,+FAXK,gCAAc,OAWL;AAVlB,wEAAkG;AAa9F,iGAbK,oCAAgB,OAaL;AAGhB,+FAhBqC,kCAAc,OAgBrC;AAdlB,mEAAkJ;AAe9I,6FAfK,gCAAY,OAeL;AACZ,6FAhBmB,gCAAY,OAgBnB;AACZ,6FAjBiC,gCAAY,OAiBjC;AACZ,6GAlB+C,gDAA4B,OAkB/C;AAC5B,4GAnB6E,+CAA2B,OAmB7E"}
@@ -3,4 +3,5 @@ export interface IRepository<T, Tid> {
3
3
  findAll(): Promise<T[]>;
4
4
  findById(id: Tid): Promise<T>;
5
5
  findBy(entity: T, columns: string[]): Promise<T[]>;
6
+ removeById(id: Tid): Promise<T>;
6
7
  }
@@ -6,8 +6,9 @@ export declare class BaseRepository<T, Tid> implements IRepository<T, Tid> {
6
6
  protected classType: new () => T;
7
7
  private primaryColumnId;
8
8
  constructor(repository: DuckDbRepository);
9
+ removeById(id: Tid): Promise<T>;
9
10
  save(entity: T): Promise<T>;
10
11
  findAll(): Promise<T[]>;
11
12
  findById(id: Tid): Promise<T>;
12
- findBy(entity: T, columns: string[]): Promise<T[]>;
13
+ findBy(entity: Partial<T>, columns: string[]): Promise<T[]>;
13
14
  }
@@ -15,6 +15,12 @@ class BaseRepository {
15
15
  throw new Error('Class type is not defined!');
16
16
  }
17
17
  }
18
+ async removeById(id) {
19
+ const deletedItem = await this.findById(id);
20
+ const query = `DELETE FROM main.${this.classType.name} WHERE ${this.primaryColumnId}='${id}'`;
21
+ await this.repository.executeQuery(query);
22
+ return deletedItem;
23
+ }
18
24
  async save(entity) {
19
25
  console.log('Saving entity:', entity);
20
26
  console.log('Class type:', this.classType.name);
@@ -33,6 +39,9 @@ class BaseRepository {
33
39
  // Get the property names from the class using reflection
34
40
  if (!this.primaryColumnId)
35
41
  this.primaryColumnId = (0, table_util_helper_1.getPrimaryId)(this.classType);
42
+ if (!this.primaryColumnId) {
43
+ throw new Error("The table doesn't have any primary key declared!");
44
+ }
36
45
  const query = `SELECT * FROM main.${this.classType.name} WHERE ${this.primaryColumnId}='${id}'`;
37
46
  const result = await this.repository.executeQuery(query);
38
47
  return result?.length ? result[0] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,oEAA4D;AAI5D,MAAa,cAAc;IAID;IAHZ,SAAS,CAAa;IACxB,eAAe,GAAG,EAAE,CAAC;IAE7B,YAAsB,UAA4B;QAA5B,eAAU,GAAV,UAAU,CAAkB;QAC9C,2EAA2E;QAC3E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAErE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAS;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEhD,uCAAuC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAElF,6BAA6B;QAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAElF,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,KAAK,GAAG,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAO;QAClB,yDAAyD;QACzD,IAAI,CAAC,IAAI,CAAC,eAAe;YACrB,IAAI,CAAC,eAAe,GAAG,IAAA,gCAAY,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,UAAU,IAAI,CAAC,eAAe,KAAK,EAAE,GAAG,CAAC;QAChG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACxD,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAS,EAAE,OAAiB;QACrC,IAAI,KAAK,GAAG,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QAC/D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,KAAK,IAAI,GAAG,MAAM,KAAM,MAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3D,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAlDD,wCAkDC"}
1
+ {"version":3,"file":"base.repository.js","sourceRoot":"","sources":["../../src/repositories/base.repository.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,20 @@
1
+ export declare enum DuckDbLocation {
2
+ File = "",
3
+ Memory = ":memory:"
4
+ }
5
+ export interface DuckDbConfig {
6
+ name: string;
7
+ location: DuckDbLocation;
8
+ filename?: string;
9
+ }
1
10
  export declare class DuckDbRepository {
2
11
  private db?;
3
12
  private connection?;
4
13
  private tables;
5
14
  private isClosed;
6
15
  private static instance;
7
- static getInstances(): DuckDbRepository;
8
- protected constructor();
16
+ static getInstances(duckdbConfig?: DuckDbConfig): DuckDbRepository;
17
+ protected constructor(location?: string);
9
18
  connect(): void;
10
19
  createTableIfNotExists<T>(tableName: string, classType: new () => T): Promise<void>;
11
20
  getDuckDbExtension(extension_name: string): Promise<any[]>;
@@ -1,11 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DuckDbRepository = void 0;
3
+ exports.DuckDbRepository = exports.DuckDbLocation = void 0;
4
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
5
5
  const duckdb_1 = require("duckdb");
6
6
  const mapping_helper_1 = require("../helpers/mapping.helper");
7
7
  const table_util_helper_1 = require("../helpers/table-util.helper");
8
8
  const db_helper_1 = require("../helpers/db.helper");
9
+ var DuckDbLocation;
10
+ (function (DuckDbLocation) {
11
+ DuckDbLocation["File"] = "";
12
+ DuckDbLocation["Memory"] = ":memory:";
13
+ })(DuckDbLocation || (exports.DuckDbLocation = DuckDbLocation = {}));
9
14
  class DuckDbRepository {
10
15
  db = undefined;
11
16
  connection = undefined;
@@ -15,16 +20,28 @@ class DuckDbRepository {
15
20
  isClosed = true;
16
21
  // private readonly tableName: string;
17
22
  // private readonly fileName: string;
18
- static instance;
19
- static getInstances() {
23
+ static instance = null;
24
+ static getInstances(duckdbConfig) {
25
+ if (!duckdbConfig) {
26
+ duckdbConfig = {
27
+ name: 'default',
28
+ location: DuckDbLocation.Memory,
29
+ filename: undefined
30
+ };
31
+ }
32
+ if (duckdbConfig?.location == DuckDbLocation.File && !duckdbConfig.filename) {
33
+ throw new Error("Filepath for duckdb is missing");
34
+ }
35
+ const dbLocation = duckdbConfig.location == DuckDbLocation.File ? duckdbConfig.filename : DuckDbLocation.Memory.toString();
36
+ console.log(dbLocation);
20
37
  if (!this.instance) {
21
- this.instance = new DuckDbRepository();
38
+ this.instance = new DuckDbRepository(dbLocation);
22
39
  }
23
40
  return this.instance;
24
41
  }
25
- constructor() {
42
+ constructor(location) {
26
43
  if (!this.db) {
27
- this.db = new duckdb_1.Database(':memory:');
44
+ this.db = new duckdb_1.Database(location ?? ':memory:');
28
45
  this.connect();
29
46
  }
30
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"duckdb.repository.js","sourceRoot":"","sources":["../../src/repositories/duckdb.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"duckdb.repository.js","sourceRoot":"","sources":["../../src/repositories/duckdb.repository.ts"],"names":[],"mappings":"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"}
package/dist/test.d.ts CHANGED
@@ -1 +1,8 @@
1
- export {};
1
+ import 'reflect-metadata';
2
+ export declare class Subject {
3
+ constructor(id?: string, name?: string, description?: string, year?: number);
4
+ Id: string;
5
+ Name?: string;
6
+ Description?: string;
7
+ Year: number;
8
+ }
package/dist/test.js CHANGED
@@ -1,44 +1,87 @@
1
1
  "use strict";
2
- // import { BaseRepository, DataTypeDecorator, DuckDbRepository, Entity, Id, Repository } from "duckdb-tinyorm";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
3
11
  Object.defineProperty(exports, "__esModule", { value: true });
4
- // @Entity
5
- // export class Amenity {
6
- // @DataTypeDecorator('VARCHAR(255)')
7
- // Name?: string = null;
8
- // @Id()
9
- // @DataTypeDecorator('VARCHAR(255)')
10
- // Type?: string = null;
11
- // @DataTypeDecorator('VARCHAR(255)')
12
- // PropertyId?: string = null;
13
- // }
14
- // // @Entity // Use the Entity decorator to register metadata
15
- // @Repository(Amenity)
16
- // class AmenityRepository extends BaseRepository<Amenity, string> {
17
- // constructor() {
18
- // super(DuckDbRepository.getInstances());
19
- // }
20
- // }
21
- // async function test() {
22
- // const amenityRepository = new AmenityRepository();
23
- // const amenity = new Amenity();
24
- // amenity.Name = "Naim";
25
- // amenity.PropertyId = "1";
26
- // amenity.Type = "Type1";
27
- // const amenity1= new Amenity();
28
- // amenity1.Name = "Naim";
29
- // amenity1.PropertyId = "2";
30
- // amenity1.Type = "Type2";
31
- // // Save the entity dynamically using metadata
32
- // await amenityRepository.save(amenity);
33
- // await amenityRepository.save(amenity1);
34
- // const result = await amenityRepository.findAll();
35
- // console.table(result);
36
- // const amenityFound:Amenity = await amenityRepository.findById("Type1");
37
- // console.info(amenityFound);
38
- // const amenityFound1: Amenity = await amenityRepository.findById("Type1");
39
- // console.info(amenityFound1);
40
- // const amenities = await amenityRepository.findBy(amenity, ["Type", "Name"]);
41
- // console.table(amenities);
42
- // }
43
- // test();
12
+ exports.Subject = void 0;
13
+ require("reflect-metadata");
14
+ const data_type_decorator_1 = require("./constants/data-type.decorator");
15
+ const base_repository_1 = require("./repositories/base.repository");
16
+ const duckdb_repository_1 = require("./repositories/duckdb.repository");
17
+ //create instance in memory or use File, if File is specfied need to specify the filename
18
+ const duckDbRepository = duckdb_repository_1.DuckDbRepository.getInstances({ name: 'default', location: duckdb_repository_1.DuckDbLocation.Memory, filename: undefined });
19
+ let Subject = class Subject {
20
+ constructor(id = "", name, description, year = (new Date()).getFullYear()) {
21
+ this.Id = id;
22
+ this.Name = name;
23
+ this.Description = description;
24
+ this.Year = year;
25
+ }
26
+ Id;
27
+ Name;
28
+ Description;
29
+ Year;
30
+ };
31
+ exports.Subject = Subject;
32
+ __decorate([
33
+ (0, data_type_decorator_1.Id)(),
34
+ (0, data_type_decorator_1.DataTypeDecorator)('VARCHAR'),
35
+ __metadata("design:type", String)
36
+ ], Subject.prototype, "Id", void 0);
37
+ __decorate([
38
+ (0, data_type_decorator_1.DataTypeDecorator)('VARCHAR'),
39
+ __metadata("design:type", String)
40
+ ], Subject.prototype, "Name", void 0);
41
+ __decorate([
42
+ (0, data_type_decorator_1.DataTypeDecorator)('VARCHAR'),
43
+ __metadata("design:type", String)
44
+ ], Subject.prototype, "Description", void 0);
45
+ __decorate([
46
+ (0, data_type_decorator_1.DataTypeDecorator)('INT'),
47
+ __metadata("design:type", Number)
48
+ ], Subject.prototype, "Year", void 0);
49
+ exports.Subject = Subject = __decorate([
50
+ data_type_decorator_1.Entity,
51
+ __metadata("design:paramtypes", [String, String, String, Number])
52
+ ], Subject);
53
+ let SubjectRepository = class SubjectRepository extends base_repository_1.BaseRepository {
54
+ constructor() {
55
+ super(duckDbRepository);
56
+ }
57
+ };
58
+ SubjectRepository = __decorate([
59
+ (0, data_type_decorator_1.Repository)(Subject),
60
+ __metadata("design:paramtypes", [])
61
+ ], SubjectRepository);
62
+ async function test() {
63
+ const subjectRepository = new SubjectRepository();
64
+ const subject1 = new Subject();
65
+ subject1.Name = "Java Basic";
66
+ subject1.Description = "Java Basic";
67
+ subject1.Year = 2024;
68
+ subject1.Id = "JB";
69
+ const subject2 = new Subject();
70
+ subject2.Name = "Java OOP";
71
+ subject2.Description = "Java Object Oriented Programming";
72
+ subject2.Year = 2024;
73
+ subject2.Id = "OOP";
74
+ await subjectRepository.save(subject1);
75
+ await subjectRepository.save(subject2);
76
+ const result = await subjectRepository.findAll();
77
+ console.table(result);
78
+ const subjectFound1 = await subjectRepository.findById("JB");
79
+ console.info(subjectFound1);
80
+ const subjectFound2 = await subjectRepository.findById("OOP");
81
+ console.info(subjectFound2);
82
+ await subjectRepository.removeById("JB");
83
+ const amenities = await subjectRepository.findBy({ Year: 2024 }, ["Year"]);
84
+ console.table(amenities);
85
+ }
86
+ test();
44
87
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AAAA,gHAAgH;;AAGhH,UAAU;AACV,yBAAyB;AAEzB,yCAAyC;AACzC,4BAA4B;AAE5B,YAAY;AACZ,yCAAyC;AACzC,4BAA4B;AAE5B,yCAAyC;AACzC,kCAAkC;AAClC,IAAI;AAKJ,+DAA+D;AAC/D,uBAAuB;AACvB,oEAAoE;AACpE,sBAAsB;AACtB,kDAAkD;AAClD,QAAQ;AACR,IAAI;AAMJ,0BAA0B;AAC1B,yDAAyD;AAEzD,qCAAqC;AACrC,6BAA6B;AAC7B,gCAAgC;AAChC,8BAA8B;AAE9B,qCAAqC;AACrC,8BAA8B;AAC9B,iCAAiC;AACjC,+BAA+B;AAI/B,oDAAoD;AACpD,6CAA6C;AAC7C,8CAA8C;AAC9C,wDAAwD;AACxD,6BAA6B;AAC7B,8EAA8E;AAC9E,kCAAkC;AAClC,gFAAgF;AAChF,mCAAmC;AAEnC,mFAAmF;AACnF,gCAAgC;AAChC,IAAI;AAEJ,UAAU"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "duckdb-tinyorm",
3
- "version": "1.0.9",
4
- "description": "TinyORM for Duckdb, easy setup",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "build": "tsc",
9
- "prepublishOnly": "npm run build",
10
- "test": "npm run test",
11
- "dev": "nodemon --exec ts-node src/test.ts",
12
- "start": "node dist/index.js"
13
- },
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/naimsulejmani/duckdb-tinyorm.git"
17
- },
18
- "keywords": [
19
- "duckdb",
20
- "orm",
21
- "tinyorm",
22
- "database"
23
- ],
24
- "author": "Naim Sulejmani",
25
- "license": "ISC",
26
- "bugs": {
27
- "url": "https://github.com/naimsulejmani/duckdb-tinyorm/issues"
28
- },
29
- "homepage": "https://github.com/naimsulejmani/duckdb-tinyorm#readme",
30
- "dependencies": {
31
- "@types/node": "^22.7.4",
32
- "dotenv": "^16.4.5",
33
- "duckdb": "^1.1.0",
34
- "globals": "^15.9.0",
35
- "nodemon": "^3.1.7",
36
- "npm": "^10.8.3",
37
- "reflect-metadata": "^0.2.2",
38
- "rimraf": "^6.0.1",
39
- "ts-node": "^10.9.2",
40
- "typescript": "^5.6.2"
41
- }
42
- }
43
-
1
+ {
2
+ "name": "duckdb-tinyorm",
3
+ "version": "1.0.11",
4
+ "description": "TinyORM for Duckdb, easy setup",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "prepublishOnly": "npm run build",
10
+ "test": "echo 'Test not implemented'",
11
+ "dev": "nodemon --exec ts-node src/test.ts",
12
+ "start": "node dist/index.js"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/naimsulejmani/duckdb-tinyorm.git"
17
+ },
18
+ "keywords": [
19
+ "duckdb",
20
+ "orm",
21
+ "tinyorm",
22
+ "database"
23
+ ],
24
+ "author": "Naim Sulejmani",
25
+ "license": "ISC",
26
+ "bugs": {
27
+ "url": "https://github.com/naimsulejmani/duckdb-tinyorm/issues"
28
+ },
29
+ "homepage": "https://github.com/naimsulejmani/duckdb-tinyorm#readme",
30
+ "dependencies": {
31
+ "@types/node": "^22.7.4",
32
+ "dotenv": "^16.4.5",
33
+ "duckdb": "^1.1.0",
34
+ "duckdb-tinyorm": "^1.0.10",
35
+ "globals": "^15.9.0",
36
+ "nodemon": "^3.1.7",
37
+ "npm": "^10.8.3",
38
+ "reflect-metadata": "^0.2.2",
39
+ "rimraf": "^6.0.1",
40
+ "ts-node": "^10.9.2",
41
+ "typescript": "^5.6.2"
42
+ }
43
+ }
package/tsconfig.json CHANGED
@@ -1,24 +1,24 @@
1
- {
2
- "compilerOptions": {
3
- "lib": [
4
- "ES2023"
5
- ],
6
- "module": "Node16",
7
- "target": "ESNext",
8
- "moduleResolution": "Node16",
9
- "moduleDetection": "force",
10
- "outDir": "./dist",
11
- "rootDir": "./src",
12
- "strict": true, // Enabled for better type safety
13
- "esModuleInterop": true,
14
- "allowJs": true,
15
- "declaration": true,
16
- "skipLibCheck": true,
17
- "experimentalDecorators": true,
18
- "allowSyntheticDefaultImports": true,
19
- "forceConsistentCasingInFileNames": true,
20
- "skipDefaultLibCheck": true,
21
- "sourceMap": true,
22
- "emitDecoratorMetadata": true
23
- }
1
+ {
2
+ "compilerOptions": {
3
+ "lib": [
4
+ "ES2023"
5
+ ],
6
+ "module": "Node16",
7
+ "target": "ESNext",
8
+ "moduleResolution": "Node16",
9
+ "moduleDetection": "force",
10
+ "outDir": "./dist",
11
+ "rootDir": "./src",
12
+ "strict": true, // Enabled for better type safety
13
+ "esModuleInterop": true,
14
+ "allowJs": true,
15
+ "declaration": true,
16
+ "skipLibCheck": true,
17
+ "experimentalDecorators": true,
18
+ "allowSyntheticDefaultImports": true,
19
+ "forceConsistentCasingInFileNames": true,
20
+ "skipDefaultLibCheck": true,
21
+ "sourceMap": true,
22
+ "emitDecoratorMetadata": true
23
+ }
24
24
  }