RevisionEntity: Change primary key type from UUID to number

The precision of sqlites datetime() timestamp is only one second (see https://www.sqlite.org/lang_datefunc.html). Therefore we could not order revisions of one note that were created in the same second. To remedy this, the primary key was changed to a monotonically increasing number, which solves the ordering problem.

Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
David Mehren 2020-09-22 20:06:16 +02:00
parent 1a22f749be
commit 99dccc0567
No known key found for this signature in database
GPG key ID: 185982BA4C42B7C3
5 changed files with 10 additions and 9 deletions

View file

@ -58,7 +58,7 @@ entity "Session" as seesion {
entity "Revision" {
*id : uuid <<generated>>
*id : number <<generated>>
--
*noteId : uuid <<FK Note>>
*content : text
@ -78,7 +78,7 @@ entity "Authorship" {
}
entity "RevisionAuthorship" {
*revisionId : uuid <<FK Revision>>
*revisionId : number <<FK Revision>>
*authorshipId : uuid <<FK Authorship>>
}

View file

@ -2,7 +2,7 @@ import { IsDate, IsNumber, IsString } from 'class-validator';
import { Revision } from './revision.entity';
export class RevisionMetadataDto {
@IsString()
@IsNumber()
id: Revision['id'];
@IsDate()

View file

@ -1,8 +1,8 @@
import { IsString } from 'class-validator';
import { IsNumber, IsString } from 'class-validator';
import { Revision } from './revision.entity';
export class RevisionDto {
@IsString()
@IsNumber()
id: Revision['id'];
@IsString()
content: string;

View file

@ -16,8 +16,8 @@ import { Authorship } from './authorship.entity';
*/
@Entity()
export class Revision {
@PrimaryGeneratedColumn('uuid')
id: string;
@PrimaryGeneratedColumn()
id: number;
/**
* The patch from the previous revision to this one.

View file

@ -16,14 +16,14 @@ export class RevisionsService {
this.logger.warn('Using hardcoded data!');
return [
{
id: 'some-uuid',
id: 42,
updatedAt: new Date(),
length: 42,
},
];
}
getNoteRevision(noteIdOrAlias: string, revisionId: string): RevisionDto {
getNoteRevision(noteIdOrAlias: string, revisionId: number): RevisionDto {
this.logger.warn('Using hardcoded data!');
return {
id: revisionId,
@ -39,6 +39,7 @@ export class RevisionsService {
},
order: {
createdAt: 'DESC',
id: 'DESC',
},
});
}