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

10 months ago

4.0.4

10 months ago

4.0.7

10 months ago

4.0.6

10 months ago

4.0.1

10 months ago

4.0.0

10 months ago

4.0.3

10 months ago

4.0.2

10 months ago

4.0.9

10 months ago

4.0.8

10 months ago

3.11.6

11 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

10 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

10 months ago

4.0.0-next.5

10 months ago

4.0.11

10 months ago

4.0.0-next.4

10 months ago

4.0.14

10 months ago

4.0.0-next.3

10 months ago

4.0.13

10 months ago

4.0.0-next.2

10 months ago

3.11.1

12 months ago

3.11.15

10 months ago

3.11.6-alpha.0

11 months ago

3.10.0

1 year ago

3.9.0

2 years 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