diff --git a/dlt-connector/jest.config.js b/dlt-connector/jest.config.js index b834c6656..599ef5a02 100644 --- a/dlt-connector/jest.config.js +++ b/dlt-connector/jest.config.js @@ -6,7 +6,7 @@ module.exports = { collectCoverageFrom: ['src/**/*.ts', '!**/node_modules/**', '!src/seeds/**', '!build/**'], coverageThreshold: { global: { - lines: 73, + lines: 72, }, }, setupFiles: ['/test/testSetup.ts'], diff --git a/dlt-connector/src/controller/Community.ts b/dlt-connector/src/controller/Community.ts index 6ba5421bb..30f14a3c2 100644 --- a/dlt-connector/src/controller/Community.ts +++ b/dlt-connector/src/controller/Community.ts @@ -1,5 +1,5 @@ import { CommunityDraft } from '@/graphql/input/CommunityDraft' -import { uuid4ToBuffer } from '@/utils' +import { uuid4ToBuffer } from '@/utils/typeConverter' import { Community } from '@entity/Community' import { getDataSource } from '@typeorm/DataSource' import { crypto_generichash as cryptoHash } from 'sodium-native' diff --git a/dlt-connector/src/graphql/input/TransactionInput.ts b/dlt-connector/src/graphql/input/TransactionInput.ts index a6990906b..d20b6ff27 100755 --- a/dlt-connector/src/graphql/input/TransactionInput.ts +++ b/dlt-connector/src/graphql/input/TransactionInput.ts @@ -3,9 +3,8 @@ import { Decimal } from 'decimal.js-light' import { TransactionType } from '../enum/TransactionType' import { InputType, Field } from 'type-graphql' -import { IsEnum } from 'class-validator' +import { IsEnum, IsInt, Min } from 'class-validator' import { IsPositiveDecimal } from '../validator/Decimal' -import { isValidDateString } from '../validator/DateString' @InputType() export class TransactionInput { @@ -18,7 +17,8 @@ export class TransactionInput { amount: Decimal @Field(() => Number) - @isValidDateString() + @IsInt() + @Min(978346800) createdAt: number // @protoField.d(4, 'string') diff --git a/dlt-connector/src/graphql/resolver/CommunityResolver.ts b/dlt-connector/src/graphql/resolver/CommunityResolver.ts index 0a2fe1431..295754e92 100644 --- a/dlt-connector/src/graphql/resolver/CommunityResolver.ts +++ b/dlt-connector/src/graphql/resolver/CommunityResolver.ts @@ -34,6 +34,7 @@ export class CommunityResolver { ): Promise { try { const topic = iotaTopicFromCommunityUUID(communityDraft.uuid) + // check if community was already written to db if (await isExist(topic)) { return new TransactionResult( @@ -47,25 +48,15 @@ export class CommunityResolver { if (!communityDraft.foreign) { // TODO: CommunityRoot Transaction for blockchain } - - const queryRunner = getDataSource().createQueryRunner() - await queryRunner.connect() - await queryRunner.startTransaction() - try { - await queryRunner.manager.save(community) - await queryRunner.commitTransaction() + await getDataSource().manager.save(community) result = new TransactionResult() } catch (err) { logger.error('error saving new community into db: %s', err) result = new TransactionResult( new TransactionError(TransactionErrorType.DB_ERROR, 'error saving community into db'), ) - await queryRunner.rollbackTransaction() - } finally { - await queryRunner.release() } - return result } catch (error) { if (error instanceof TransactionError) { diff --git a/dlt-connector/src/graphql/validator/DateString.ts b/dlt-connector/src/graphql/validator/DateString.ts index 300841b31..3f46d89ec 100644 --- a/dlt-connector/src/graphql/validator/DateString.ts +++ b/dlt-connector/src/graphql/validator/DateString.ts @@ -10,7 +10,7 @@ export function isValidDateString(validationOptions?: ValidationOptions) { options: validationOptions, validator: { validate(value: string): boolean { - return new Date(value).toString() !== 'Invalid Date' + return !isNaN(Date.parse(value)) }, defaultMessage(): string { return `${propertyName} must be a valid date string` diff --git a/dlt-connector/src/utils.test.ts b/dlt-connector/src/utils.test.ts deleted file mode 100644 index 74051f343..000000000 --- a/dlt-connector/src/utils.test.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { hardenDerivationIndex, HARDENED_KEY_BITMASK } from './utils' - -describe('utils', () => { - it('test bitmask for hardened keys', () => { - const derivationIndex = hardenDerivationIndex(1) - expect(derivationIndex).toBeGreaterThan(HARDENED_KEY_BITMASK) - }) -}) diff --git a/dlt-connector/src/utils.ts b/dlt-connector/src/utils/typeConverter.ts similarity index 100% rename from dlt-connector/src/utils.ts rename to dlt-connector/src/utils/typeConverter.ts diff --git a/dlt-database/entity/0001-init_db/Account.ts b/dlt-database/entity/0001-init_db/Account.ts index 05bbf3393..ce80367bd 100644 --- a/dlt-database/entity/0001-init_db/Account.ts +++ b/dlt-database/entity/0001-init_db/Account.ts @@ -1,12 +1,4 @@ -import { - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - ManyToOne, - JoinColumn, - OneToMany, -} from 'typeorm' +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, OneToMany } from 'typeorm' import { User } from '../User' import { TransactionRecipe } from '../TransactionRecipe' import { ConfirmedTransaction } from '../ConfirmedTransaction' @@ -36,7 +28,7 @@ export class Account { @Column({ type: 'tinyint', unsigned: true }) type: number - @CreateDateColumn({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) + @Column({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) createdAt: Date @Column({ name: 'confirmed_at', type: 'datetime', nullable: true }) diff --git a/dlt-database/entity/0001-init_db/Community.ts b/dlt-database/entity/0001-init_db/Community.ts index 6c8daa8e9..e44aa2f8f 100644 --- a/dlt-database/entity/0001-init_db/Community.ts +++ b/dlt-database/entity/0001-init_db/Community.ts @@ -1,12 +1,4 @@ -import { - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - JoinColumn, - OneToOne, - OneToMany, -} from 'typeorm' +import { Entity, PrimaryGeneratedColumn, Column, JoinColumn, OneToOne, OneToMany } from 'typeorm' import { Account } from '../Account' import { TransactionRecipe } from '../TransactionRecipe' import { AccountCommunity } from '../AccountCommunity' @@ -45,7 +37,7 @@ export class Community { @JoinColumn({ name: 'auf_account_id' }) aufAccount?: Account - @CreateDateColumn({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) + @Column({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) createdAt: Date @Column({ name: 'confirmed_at', type: 'datetime', nullable: true }) diff --git a/dlt-database/entity/0001-init_db/TransactionRecipe.ts b/dlt-database/entity/0001-init_db/TransactionRecipe.ts index 12d3dbdfe..c4a89e5dd 100644 --- a/dlt-database/entity/0001-init_db/TransactionRecipe.ts +++ b/dlt-database/entity/0001-init_db/TransactionRecipe.ts @@ -1,12 +1,4 @@ -import { - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - ManyToOne, - OneToOne, - JoinColumn, -} from 'typeorm' +import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToOne, JoinColumn } from 'typeorm' import { Decimal } from 'decimal.js-light' import { DecimalTransformer } from '../../src/typeorm/DecimalTransformer' @@ -63,7 +55,7 @@ export class TransactionRecipe { @Column({ type: 'tinyint' }) type: number - @CreateDateColumn({ name: 'created_at', type: 'datetime' }) + @Column({ name: 'created_at', type: 'datetime' }) createdAt: Date @Column({ name: 'body_bytes', type: 'blob' }) diff --git a/dlt-database/entity/0001-init_db/User.ts b/dlt-database/entity/0001-init_db/User.ts index d6868d458..a4452c68d 100644 --- a/dlt-database/entity/0001-init_db/User.ts +++ b/dlt-database/entity/0001-init_db/User.ts @@ -1,12 +1,4 @@ -import { - BaseEntity, - Entity, - PrimaryGeneratedColumn, - Column, - OneToMany, - JoinColumn, - CreateDateColumn, -} from 'typeorm' +import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany, JoinColumn } from 'typeorm' import { Account } from '../Account' @@ -26,7 +18,7 @@ export class User extends BaseEntity { @Column({ name: 'derive1_pubkey', type: 'binary', length: 32, unique: true }) derive1Pubkey: Buffer - @CreateDateColumn({ + @Column({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)', diff --git a/dlt-database/entity/0002-refactor_add_community/Community.ts b/dlt-database/entity/0002-refactor_add_community/Community.ts index 00f582194..7547a115f 100644 --- a/dlt-database/entity/0002-refactor_add_community/Community.ts +++ b/dlt-database/entity/0002-refactor_add_community/Community.ts @@ -1,12 +1,4 @@ -import { - Entity, - PrimaryGeneratedColumn, - Column, - CreateDateColumn, - JoinColumn, - OneToOne, - OneToMany, -} from 'typeorm' +import { Entity, PrimaryGeneratedColumn, Column, JoinColumn, OneToOne, OneToMany } from 'typeorm' import { Account } from '../Account' import { TransactionRecipe } from '../TransactionRecipe' import { AccountCommunity } from '../AccountCommunity' @@ -45,7 +37,7 @@ export class Community { @JoinColumn({ name: 'auf_account_id' }) aufAccount?: Account - @CreateDateColumn({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) + @Column({ name: 'created_at', type: 'datetime', default: () => 'CURRENT_TIMESTAMP(3)' }) createdAt: Date @Column({ name: 'confirmed_at', type: 'datetime', nullable: true }) diff --git a/dlt-database/migrations/0001-init_db.ts b/dlt-database/migrations/0001-init_db.ts index d2ae6494b..85fed59e0 100644 --- a/dlt-database/migrations/0001-init_db.ts +++ b/dlt-database/migrations/0001-init_db.ts @@ -125,6 +125,6 @@ export async function downgrade(queryFn: (query: string, values?: any[]) => Prom await queryFn(`DROP TABLE IF EXISTS \`accounts_communities\`;`) await queryFn(`DROP TABLE IF EXISTS \`transaction_recipes\`;`) await queryFn(`DROP TABLE IF EXISTS \`confirmed_transactions\`;`) - await queryFn(`DROP TABLE IF EXISTS \`community\`;`) + await queryFn(`DROP TABLE IF EXISTS \`communities\`;`) await queryFn(`DROP TABLE IF EXISTS \`invalid_transactions\`;`) }