4.0.15 • Published 7 months ago

@orion-js/typed-model v4.0.15

Weekly downloads
-
License
MIT
Repository
-
Last release
7 months ago

Typed Model Package

Allows you to define a class that represents a model. This allows quicker development and better type checking of your models (since all class type definitions can be reused).

Recommended usage example

Folder structure

+-- models/
    +-- user/
        +-- index.ts
        +-- resolvers/
            +-- fullName.ts

Resolver definition

// models/user/resolvers/fullName.ts

export const fullNameResolver = async ({firstName, lastName}) => `${firstName} ${lastName}`

export const fullNameSchema = {
  returns: {type: String},
  resolve: fullNameResolver
}

Model definition

// models/user/index.ts

import {Prop, Schema, Resolver, getModelForClass} from '@orion-js/typed-model'
import {fullNameSchema, fullNameResolver} from './resolvers/fullName'

@Schema()
export class User {
  @Prop()
  firstName: string

  @Prop({optional: true})
  lastName: string

  @Resolver(fullNameSchema)
  fullName: typeof fullNameResolver
}

export default getModelForClass(User)

Advanced usage

Schema Extension

Typed-model allows extending an existing Schema to reduce code repetition.

import {SchemaFieldTypes} from '@orion-js/schema'

@Schema()
class ModelWithId {
  @Prop({type: SchemaFieldTypes.ID})
  _id: string
}

class ModelWithName extends ModelWithId {
  @Prop()
  name: string
}

export default getModelForClass(ModelWithName)
// Will contain both _id and name props
4.0.0-alpha.3

10 months ago

3.13.1

10 months ago

4.0.0-alpha.2

10 months ago

3.12.0

10 months ago

4.0.5

9 months ago

4.0.4

9 months ago

4.0.7

9 months ago

4.0.6

9 months ago

4.0.1

9 months ago

4.0.0

10 months ago

4.0.3

9 months ago

4.0.2

9 months ago

4.0.9

9 months ago

4.0.8

9 months ago

3.11.6

10 months ago

3.11.8

10 months ago

4.0.0-next.8

10 months ago

4.0.0-next.7

10 months ago

4.0.0-next.6

10 months ago

4.0.10

9 months ago

4.0.0-next.1

10 months ago

4.0.15

7 months ago

4.0.0-next.0

10 months ago

4.0.12

9 months ago

4.0.0-next.5

10 months ago

4.0.11

9 months ago

4.0.0-next.4

10 months ago

4.0.14

9 months ago

4.0.0-next.3

10 months ago

4.0.13

9 months ago

4.0.0-next.2

10 months ago

3.11.1

11 months ago

3.11.15

10 months ago

3.11.6-alpha.0

10 months ago

3.10.0

1 year ago

3.9.0

1 year ago

3.7.6

2 years ago

3.7.4

2 years ago

3.7.3

2 years ago

3.7.2

2 years ago

3.7.1

2 years ago

3.6.5

3 years ago

3.6.4

3 years ago

3.6.1

3 years ago

3.5.3

3 years ago

3.3.9

3 years ago

3.3.6

3 years ago

3.4.1

3 years ago

3.3.13

3 years ago

3.3.14

3 years ago

3.3.10

3 years ago

3.3.11

3 years ago

3.3.12

3 years ago

3.4.9

3 years ago

3.3.25

3 years ago

3.5.0

3 years ago

3.3.20

3 years ago

3.3.21

3 years ago

3.2.53

3 years ago

3.2.39

4 years ago

3.2.48

3 years ago

3.2.40

4 years ago

3.2.28

4 years ago

3.2.29

4 years ago

3.2.21

4 years ago

3.2.18

4 years ago

3.2.33

4 years ago

3.1.12

4 years ago

3.1.13

4 years ago

3.1.10

4 years ago

3.2.2

4 years ago

3.2.1

4 years ago

3.2.0

4 years ago

3.1.27

4 years ago

3.1.6

4 years ago

3.2.4

4 years ago

3.2.3

4 years ago

3.2.10

4 years ago

3.1.1

4 years ago

3.1.0-alpha.0

4 years ago

3.0.38

4 years ago

3.0.36

4 years ago

3.0.37

4 years ago

3.0.24

4 years ago

3.0.27

4 years ago

3.0.28

4 years ago

3.0.26

4 years ago

3.0.20

4 years ago

3.0.9

4 years ago

3.0.13

4 years ago

3.0.32

4 years ago

3.0.2

4 years ago

3.0.33

4 years ago

3.0.16

4 years ago

3.0.17

4 years ago

3.0.7

4 years ago

3.0.14

4 years ago

3.0.6

4 years ago

3.0.15

4 years ago

3.0.31

4 years ago

3.0.0

4 years ago

3.0.0-alpha.24

4 years ago

3.0.0-alpha.23

4 years ago

3.0.0-alpha.20

4 years ago

3.0.0-alpha.19

4 years ago

3.0.0-alpha.16

4 years ago

3.0.0-alpha.13

4 years ago