feat: uuid field

This commit is contained in:
chenos 2022-04-29 12:00:24 +08:00
parent e6f71c65fd
commit 2c0d3fcc5a
3 changed files with 54 additions and 0 deletions

View File

@ -0,0 +1,30 @@
import { mockDatabase } from '../';
import { Database } from '../../database';
describe('string field', () => {
let db: Database;
beforeEach(async () => {
db = mockDatabase();
});
afterEach(async () => {
await db.close();
});
it('define', async () => {
const Test = db.collection({
name: 'tests',
autoGenId: false,
fields: [
{
type: 'uuid',
name: 'id',
primaryKey: true,
},
],
});
await Test.sync();
await Test.model.create();
});
});

View File

@ -22,6 +22,7 @@ import { StringFieldOptions } from './string-field';
import { TextFieldOptions } from './text-field'; import { TextFieldOptions } from './text-field';
import { TimeFieldOptions } from './time-field'; import { TimeFieldOptions } from './time-field';
import { UidFieldOptions } from './uid-field'; import { UidFieldOptions } from './uid-field';
import { UUIDFieldOptions } from './uuid-field';
import { VirtualFieldOptions } from './virtual-field'; import { VirtualFieldOptions } from './virtual-field';
export * from './array-field'; export * from './array-field';
@ -43,6 +44,7 @@ export * from './string-field';
export * from './text-field'; export * from './text-field';
export * from './time-field'; export * from './time-field';
export * from './uid-field'; export * from './uid-field';
export * from './uuid-field';
export * from './virtual-field'; export * from './virtual-field';
export type FieldOptions = export type FieldOptions =
@ -64,6 +66,7 @@ export type FieldOptions =
| TimeFieldOptions | TimeFieldOptions
| DateFieldOptions | DateFieldOptions
| UidFieldOptions | UidFieldOptions
| UUIDFieldOptions
| PasswordFieldOptions | PasswordFieldOptions
| ContextFieldOptions | ContextFieldOptions
| BelongsToFieldOptions | BelongsToFieldOptions

View File

@ -0,0 +1,21 @@
import { DataTypes } from 'sequelize';
import { BaseColumnFieldOptions, Field, FieldContext } from './field';
export class UuidField extends Field {
constructor(options?: any, context?: FieldContext) {
super(
{
defaultValue: DataTypes.UUIDV4,
...options,
},
context,
);
}
get dataType() {
return DataTypes.UUID;
}
}
export interface UUIDFieldOptions extends BaseColumnFieldOptions {
type: 'uuid';
}