Add type Date.
This commit is contained in:
parent
3ce2b74900
commit
c6cdfc75ea
5 changed files with 45 additions and 13 deletions
|
@ -44,6 +44,9 @@ class Person extends Model
|
||||||
|
|
||||||
@Property(SString)
|
@Property(SString)
|
||||||
email: string = undefined;
|
email: string = undefined;
|
||||||
|
|
||||||
|
@Property(SDate)
|
||||||
|
createdAt: Date = undefined;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -104,6 +107,7 @@ following a certain naming convention: "S{type_name}".
|
||||||
- `StringType` => `SString`
|
- `StringType` => `SString`
|
||||||
- `NumericType` => `SNumeric`
|
- `NumericType` => `SNumeric`
|
||||||
- `DecimalType` => `SDecimal`
|
- `DecimalType` => `SDecimal`
|
||||||
|
- `DateType` => `SDate`
|
||||||
- `ArrayType` => `SArray`
|
- `ArrayType` => `SArray`
|
||||||
- `ModelType` => `SModel`
|
- `ModelType` => `SModel`
|
||||||
|
|
||||||
|
|
22
src/Model/Types/DateType.ts
Normal file
22
src/Model/Types/DateType.ts
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
import {Type} from "./Type";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of dates.
|
||||||
|
*/
|
||||||
|
export class DateType extends Type<string, Date>
|
||||||
|
{
|
||||||
|
deserialize(value: string): Date
|
||||||
|
{
|
||||||
|
return new Date(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
serialize(value: Date): string
|
||||||
|
{
|
||||||
|
return value.toISOString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of dates.
|
||||||
|
*/
|
||||||
|
export const SDate = new DateType();
|
|
@ -17,6 +17,6 @@ export class DecimalType extends Type<string, number>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of decimal numbers;
|
* Type of decimal numbers.
|
||||||
*/
|
*/
|
||||||
export const SDecimal = new DecimalType();
|
export const SDecimal = new DecimalType();
|
||||||
|
|
|
@ -4,6 +4,7 @@ export * from "./Model/Model";
|
||||||
|
|
||||||
export * from "./Model/Types/Type";
|
export * from "./Model/Types/Type";
|
||||||
export * from "./Model/Types/ArrayType";
|
export * from "./Model/Types/ArrayType";
|
||||||
|
export * from "./Model/Types/DateType";
|
||||||
export * from "./Model/Types/DecimalType";
|
export * from "./Model/Types/DecimalType";
|
||||||
export * from "./Model/Types/ModelType";
|
export * from "./Model/Types/ModelType";
|
||||||
export * from "./Model/Types/NumericType";
|
export * from "./Model/Types/NumericType";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import {SArray, SDecimal, SModel, SNumeric, SString, Identifier, Model, Property} from "../src";
|
import {SArray, SDecimal, SModel, SNumeric, SString, SDate, Identifier, Model, Property} from "../src";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Another test model.
|
* Another test model.
|
||||||
|
@ -14,13 +14,17 @@ class Author extends Model
|
||||||
@Property(SString)
|
@Property(SString)
|
||||||
email: string = undefined;
|
email: string = undefined;
|
||||||
|
|
||||||
constructor(name: string = undefined, firstName: string = undefined, email: string = undefined)
|
@Property(SDate)
|
||||||
|
createdAt: Date = undefined;
|
||||||
|
|
||||||
|
constructor(name: string = undefined, firstName: string = undefined, email: string = undefined, createdAt: Date = undefined)
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.firstName = firstName;
|
this.firstName = firstName;
|
||||||
this.email = email;
|
this.email = email;
|
||||||
|
this.createdAt = createdAt;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,8 +55,8 @@ it("deserialize", () => {
|
||||||
id: 1,
|
id: 1,
|
||||||
title: "this is a test",
|
title: "this is a test",
|
||||||
authors: [
|
authors: [
|
||||||
{ name: "DOE", firstName: "John", email: "test@test.test" },
|
{ name: "DOE", firstName: "John", email: "test@test.test", createdAt: "2022-08-07T08:47:01.000Z", },
|
||||||
{ name: "TEST", firstName: "Another", email: "another@test.test" },
|
{ name: "TEST", firstName: "Another", email: "another@test.test", createdAt: "2022-09-07T18:32:55.000Z", },
|
||||||
],
|
],
|
||||||
text: "this is a long test.",
|
text: "this is a long test.",
|
||||||
evaluation: "25.23",
|
evaluation: "25.23",
|
||||||
|
@ -60,8 +64,8 @@ it("deserialize", () => {
|
||||||
id: 1,
|
id: 1,
|
||||||
title: "this is a test",
|
title: "this is a test",
|
||||||
authors: [
|
authors: [
|
||||||
{ name: "DOE", firstName: "John", email: "test@test.test" },
|
{ name: "DOE", firstName: "John", email: "test@test.test", createdAt: "2022-08-07T08:47:01.000Z", },
|
||||||
{ name: "TEST", firstName: "Another", email: "another@test.test" },
|
{ name: "TEST", firstName: "Another", email: "another@test.test", createdAt: "2022-09-07T18:32:55.000Z", },
|
||||||
],
|
],
|
||||||
text: "this is a long test.",
|
text: "this is a long test.",
|
||||||
evaluation: "25.23",
|
evaluation: "25.23",
|
||||||
|
@ -69,11 +73,12 @@ it("deserialize", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("create and check state then serialize", () => {
|
it("create and check state then serialize", () => {
|
||||||
|
const now = new Date();
|
||||||
const article = new Article();
|
const article = new Article();
|
||||||
article.id = 1;
|
article.id = 1;
|
||||||
article.title = "this is a test";
|
article.title = "this is a test";
|
||||||
article.authors = [
|
article.authors = [
|
||||||
new Author("DOE", "John", "test@test.test"),
|
new Author("DOE", "John", "test@test.test", now),
|
||||||
];
|
];
|
||||||
article.text = "this is a long test.";
|
article.text = "this is a long test.";
|
||||||
article.evaluation = 25.23;
|
article.evaluation = 25.23;
|
||||||
|
@ -85,7 +90,7 @@ it("create and check state then serialize", () => {
|
||||||
id: 1,
|
id: 1,
|
||||||
title: "this is a test",
|
title: "this is a test",
|
||||||
authors: [
|
authors: [
|
||||||
{ name: "DOE", firstName: "John", email: "test@test.test" },
|
{ name: "DOE", firstName: "John", email: "test@test.test", createdAt: now.toISOString() },
|
||||||
],
|
],
|
||||||
text: "this is a long test.",
|
text: "this is a long test.",
|
||||||
evaluation: "25.23",
|
evaluation: "25.23",
|
||||||
|
@ -98,8 +103,8 @@ it("deserialize then save", () => {
|
||||||
id: 1,
|
id: 1,
|
||||||
title: "this is a test",
|
title: "this is a test",
|
||||||
authors: [
|
authors: [
|
||||||
{ name: "DOE", firstName: "John", email: "test@test.test" },
|
{ name: "DOE", firstName: "John", email: "test@test.test", createdAt: new Date(), },
|
||||||
{ name: "TEST", firstName: "Another", email: "another@test.test" },
|
{ name: "TEST", firstName: "Another", email: "another@test.test", createdAt: new Date(), },
|
||||||
],
|
],
|
||||||
text: "this is a long test.",
|
text: "this is a long test.",
|
||||||
evaluation: "25.23",
|
evaluation: "25.23",
|
||||||
|
@ -124,8 +129,8 @@ it("save with modified submodels", () => {
|
||||||
id: 1,
|
id: 1,
|
||||||
title: "this is a test",
|
title: "this is a test",
|
||||||
authors: [
|
authors: [
|
||||||
{ name: "DOE", firstName: "John", email: "test@test.test" },
|
{ name: "DOE", firstName: "John", email: "test@test.test", createdAt: new Date(), },
|
||||||
{ name: "TEST", firstName: "Another", email: "another@test.test" },
|
{ name: "TEST", firstName: "Another", email: "another@test.test", createdAt: new Date(), },
|
||||||
],
|
],
|
||||||
text: "this is a long test.",
|
text: "this is a long test.",
|
||||||
evaluation: "25.23",
|
evaluation: "25.23",
|
||||||
|
|
Loading…
Reference in a new issue