---
title: StoreSchema
status: published
category: store
group: Class
author: api
date: 06/23/2023
order: 29
---Public Class
Table of Contents
- [Properties](#properties)
- [currentStoreVersion](#StoreSchema-currentStoreVersion-member)
- [types](#StoreSchema-types-member)
- [Methods](#methods)
- [create](#StoreSchema-create-member-1)
- [migratePersistedRecord](#StoreSchema-migratePersistedRecord-member-1)
- [migrateStoreSnapshot](#StoreSchema-migrateStoreSnapshot-member-1)
- [serialize](#StoreSchema-serialize-member-1)
- [serializeEarliestVersion](#StoreSchema-serializeEarliestVersion-member-1)
- [validateRecord](#StoreSchema-validateRecord-member-1)
##### Signature
```ts
class StoreSchema {}
```
##### References
[UnknownRecord](/gen/store/UnknownRecord-type)
---
## Properties
### `currentStoreVersion` \{#StoreSchema-currentStoreVersion-member}
Public Readonly Property
##### Signature
```ts
get currentStoreVersion(): number
```
---
### `types` \{#StoreSchema-types-member}
Public Readonly Property
##### Signature
```ts
readonly types: {
[Record in R as Record['typeName']]: RecordType
}
```
##### References
[RecordType](/gen/store/RecordType-class)
---
## Methods
### `create()` \{#StoreSchema-create-member-1}
Public Static Method
##### Parameters
`types`
```ts
{
[TypeName in R['typeName']]: {
createId: any
}
}
```
`options`
(optional)
```ts
StoreSchemaOptions
```
##### Returns
```ts
StoreSchema
```
##### References
[UnknownRecord](/gen/store/UnknownRecord-type), [StoreSchemaOptions](/gen/store/StoreSchemaOptions-type), [StoreSchema](/gen/store/StoreSchema-class)
---
### `migratePersistedRecord()` \{#StoreSchema-migratePersistedRecord-member-1}
Public Method
##### Parameters
`record`
```ts
R
```
`persistedSchema`
```ts
SerializedSchema
```
`direction`
(optional)
```ts
'down' | 'up'
```
##### Returns
```ts
MigrationResult
```
##### References
[SerializedSchema](/gen/store/SerializedSchema-interface), [MigrationResult](/gen/store/MigrationResult-type)
---
### `migrateStoreSnapshot()` \{#StoreSchema-migrateStoreSnapshot-member-1}
Public Method
##### Parameters
`storeSnapshot`
```ts
StoreSnapshot
```
`persistedSchema`
```ts
SerializedSchema
```
##### Returns
```ts
MigrationResult>
```
##### References
[StoreSnapshot](/gen/store/StoreSnapshot-type), [SerializedSchema](/gen/store/SerializedSchema-interface), [MigrationResult](/gen/store/MigrationResult-type)
---
### `serialize()` \{#StoreSchema-serialize-member-1}
Public Method
##### Parameters
None
##### Returns
```ts
SerializedSchema
```
##### References
[SerializedSchema](/gen/store/SerializedSchema-interface)
---
### `serializeEarliestVersion()` \{#StoreSchema-serializeEarliestVersion-member-1}
Public Method
##### Parameters
None
##### Returns
```ts
SerializedSchema
```
##### References
[SerializedSchema](/gen/store/SerializedSchema-interface)
---
### `validateRecord()` \{#StoreSchema-validateRecord-member-1}
Public Method
##### Parameters
`store`
```ts
Store
```
`record`
```ts
R
```
`phase`
```ts
| 'createRecord'
| 'initialize'
| 'tests'
| 'updateRecord'
```
`recordBefore`
```ts
null | R
```
##### Returns
```ts
R
```
##### References
[Store](/gen/store/Store-class)
---