Skip to content

Commit 8354aec

Browse files
authored
Merge pull request #37 from ringcentral/feature/relation-fields
Feature/relation fields
2 parents 9c6bc10 + a6ec2b2 commit 8354aec

File tree

15 files changed

+459
-101
lines changed

15 files changed

+459
-101
lines changed

apps/example-client/src/app/app.component.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, Inject, OnInit } from '@angular/core';
22
import {JsonApiSdkService, EntityArray} from 'json-api-nestjs-sdk';
3-
import {Users, Addresses} from 'database/entity'
3+
import {Users, Addresses, Requests, Pods, RequestsHavePodLocks} from 'database/entity'
44
import { map, Observable, shareReplay, switchMap } from 'rxjs';
55
import { Test } from './app.module';
66

@@ -108,9 +108,9 @@ export class AppComponent implements OnInit{
108108
const user = new Users();
109109
user.id = 1;
110110

111-
this.jsonApiSdkService.getOne<Users>(user, {include: ['roles', 'manager']}, true).subscribe(
112-
r => console.log(r)
113-
)
111+
const requests = new Requests();
112+
requests.id = 2;
113+
this.jsonApiSdkService.getRelationships<Requests, Pods, RequestsHavePodLocks>(requests, 'podLocks', RequestsHavePodLocks).subscribe(r => console.log(r))
114114

115115
this.oneUser$ = this.jsonApiSdkService.getOne<Users>(user, {include: ['roles', 'manager']})
116116
this.listAddresses$ = this.jsonApiSdkService.getList<Addresses>(

apps/example/src/resources/resources.module.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Module, Logger } from '@nestjs/common';
22
import { JsonApiModule } from 'json-api-nestjs';
3-
import { Addresses, Comments, Roles, Users } from 'database';
3+
import { Addresses, Comments, Roles, Users, Pods, RequestsHavePodLocks, Requests } from 'database';
44

55
import {
66
ExampleController
@@ -29,7 +29,9 @@ import {
2929
Comments,
3030
Addresses,
3131
Roles,
32-
Users
32+
Users,
33+
Pods,
34+
Requests
3335
]
3436
})
3537
],

libs/database/src/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const config = {
77
username: "postgres",
88
password: "password",
99
database: "example",
10+
logging: true,
1011
migrations: [join(__dirname, '/migrations/**/*{.ts,.js}')],
1112
entities: [join(__dirname, '/entities/**/*{.ts,.js}')],
1213
factories: [join(__dirname, '/seed-factories/**/*{.ts,.js}')],

libs/database/src/database.module.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import { Module } from '@nestjs/common';
22
import { TypeOrmModule } from '@nestjs/typeorm';
33

44
import config from './config';
5-
import { Addresses, Comments, Roles, Users } from './entities';
5+
import { Addresses, Comments, Roles, Users, RequestsHavePodLocks, Pods, Requests } from './entities';
66

77
@Module({
88
imports: [
99
TypeOrmModule.forRoot({
1010
...config as any,
11-
...{entities: [Comments, Addresses, Roles, Users]},
11+
...{entities: [Comments, Addresses, Roles, Users,
12+
RequestsHavePodLocks,
13+
Pods, Requests]},
1214
}),
1315
],
1416
providers: [],

libs/database/src/entities/requests-have-pod-locks.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,37 @@ export class RequestsHavePodLocks {
1414
@PrimaryGeneratedColumn()
1515
public id: number;
1616

17+
public set requestId(id){
18+
this.request_id = id
19+
}
20+
21+
public get requestId(){
22+
return this.request_id;
23+
}
24+
1725
@IsNotEmpty()
1826
@Column({
1927
name: 'request_id',
2028
type: 'int',
2129
nullable: false,
2230
})
23-
public requestId: number;
31+
protected request_id: number;
2432

2533
@IsNotEmpty()
2634
@Column({
2735
name: 'pod_id',
2836
type: 'int',
2937
nullable: false,
3038
})
31-
public podId: number;
39+
protected pod_id: number;
40+
41+
public set podId(id){
42+
this.pod_id = id
43+
}
44+
45+
public get podId(): number{
46+
return this.request_id;
47+
}
3248

3349
@IsEmpty()
3450
@CreateDateColumn({
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import {
2+
MigrationInterface,
3+
QueryRunner,
4+
TableColumn,
5+
Table,
6+
TableForeignKey, TableIndex
7+
} from 'typeorm';
8+
9+
export class PodsTestTable1607701632700 implements MigrationInterface {
10+
protected readonly tableName = 'comments';
11+
12+
public async up(queryRunner: QueryRunner): Promise<void> {
13+
await queryRunner.createTable(
14+
new Table({
15+
name: 'requests',
16+
columns: [
17+
new TableColumn({
18+
name: 'id',
19+
type: 'int',
20+
isGenerated: true,
21+
isPrimary: true,
22+
unsigned: true,
23+
generationStrategy: 'increment',
24+
}),
25+
new TableColumn({
26+
name: 'created_at',
27+
type: 'timestamp',
28+
isNullable: true,
29+
default: 'CURRENT_TIMESTAMP',
30+
}),
31+
new TableColumn({
32+
name: 'updated_at',
33+
type: 'timestamp',
34+
isNullable: true,
35+
default: 'CURRENT_TIMESTAMP',
36+
}),
37+
],
38+
})
39+
);
40+
await queryRunner.createTable(
41+
new Table({
42+
name: 'pods',
43+
columns: [
44+
new TableColumn({
45+
name: 'id',
46+
type: 'int',
47+
isGenerated: true,
48+
isPrimary: true,
49+
unsigned: true,
50+
generationStrategy: 'increment',
51+
}),
52+
new TableColumn({
53+
name: 'name',
54+
type: 'varchar',
55+
isNullable: true,
56+
default: 'NULL',
57+
}),
58+
new TableColumn({
59+
name: 'created_at',
60+
type: 'timestamp',
61+
isNullable: true,
62+
default: 'CURRENT_TIMESTAMP',
63+
}),
64+
new TableColumn({
65+
name: 'updated_at',
66+
type: 'timestamp',
67+
isNullable: true,
68+
default: 'CURRENT_TIMESTAMP',
69+
}),
70+
],
71+
})
72+
);
73+
await queryRunner.createTable(
74+
new Table({
75+
name: 'requests_have_pod_locks',
76+
columns: [
77+
new TableColumn({
78+
name: 'id',
79+
type: 'int',
80+
isGenerated: true,
81+
isPrimary: true,
82+
unsigned: true,
83+
generationStrategy: 'increment',
84+
}),
85+
new TableColumn({
86+
name: 'request_id',
87+
type: 'int',
88+
isNullable: false,
89+
unsigned: true,
90+
}),
91+
new TableColumn({
92+
name: 'pod_id',
93+
type: 'int',
94+
isNullable: false,
95+
unsigned: true,
96+
}),
97+
new TableColumn({
98+
name: 'external_id',
99+
type: 'int',
100+
isNullable: true,
101+
unsigned: true,
102+
}),
103+
new TableColumn({
104+
name: 'created_at',
105+
type: 'timestamp',
106+
isNullable: true,
107+
default: 'CURRENT_TIMESTAMP',
108+
}),
109+
new TableColumn({
110+
name: 'updated_at',
111+
type: 'timestamp',
112+
isNullable: true,
113+
default: 'CURRENT_TIMESTAMP',
114+
}),
115+
],
116+
foreignKeys: [
117+
new TableForeignKey({
118+
referencedTableName: 'requests',
119+
referencedColumnNames: ['id'],
120+
columnNames: ['request_id'],
121+
}),
122+
new TableForeignKey({
123+
referencedTableName: 'pods',
124+
referencedColumnNames: ['id'],
125+
columnNames: ['pod_id'],
126+
}),
127+
],
128+
indices: [
129+
new TableIndex({
130+
columnNames: ['request_id', 'pod_id'],
131+
isUnique: true,
132+
}),
133+
],
134+
})
135+
);
136+
}
137+
138+
public async down(queryRunner: QueryRunner): Promise<void> {
139+
await queryRunner.dropTable('requests');
140+
await queryRunner.dropTable('pods');
141+
await queryRunner.dropTable('requests_have_pod_locks');
142+
}
143+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { EntityRepository, Repository } from 'typeorm';
2+
import { Pods } from '../entities';
3+
4+
@EntityRepository(Pods)
5+
export class PodsRepository extends Repository<Pods>{}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { EntityRepository, Repository } from 'typeorm';
2+
import { Requests } from '../entities';
3+
4+
@EntityRepository(Requests)
5+
export class RequestsRepository extends Repository<Requests>{}

0 commit comments

Comments
 (0)