adopted-ember-addons / adopted-ember-addons/ember-changeset

Warp Drive Schema throws errors

Aperta
#710 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
JavaScript
Stelle
425
Fork
136
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

We are trying to migrate Ember Data Model to Warp Drive Schema (Legacy Mode).

```Ts
// data/page/schema.ts
import { withDefaults } from '@warp-drive/legacy/model/migration-support';

export const PageSchema = withDefaults({
type: 'page',
fields: [
{ name: 'title', kind: 'attribute', type: 'string' },
{ name: 'body', kind: 'attribute', type: 'string' }
]
});
```

```Ts
// services/store.ts
import { useLegacyStore } from '@warp-drive/legacy';
import { JSONAPICache } from '@warp-drive/json-api';
import { PageSchema } from 'web-app/data/page/schema';

const Store = useLegacyStore({
legacyRequests: true,
linksMode: false,
cache: JSONAPICache,
schemas: [
PageSchema
],
handlers: []
});

export default Store;

export type StoreService = InstanceType;
```

```Ts
// route.ts
import Route from '@ember/routing/route';
import { service } from '@ember/service';
import { findRecord } from '@warp-drive/utilities/json-api';
import type { StoreService } from 'web-app/services/store';

export default class AdminPageEditRoute extends Route {
@service declare store: StoreService;

async model(params: { page_id: string }) {
const { content } = await this.store.request(
findRecord('page', params.page_id)
);

return content.data;
}
}
```

```Ts
// validations/page.ts
import {
validatePresence,
validateLength
} from 'ember-changeset-validations/validators';

export default {
title: [
validatePresence(true), //
validateLength({ min: 3, max: 100 })
],

body: [
validatePresence(true), //
validateLength({ min: 25, max: 100000 })
]
};
```

```Gts
// component
import Component from '@glimmer/component';
import changeset from 'ember-changeset/helpers/changeset';
import { service } from '@ember/service';
import validations from 'web-app/validations/page';

interface Signature {
Args: {
page: Page;
};
}

export default class PageForm extends Component {
validations = validations;


{{#let (changeset @page this.validations) as |changesetSchema|}}
{{changesetSchema}}
{{/let}}

}
```

We get this error:

```console
Uncaught (in promise) Error: No field named __changeset__ on page
```

# Versions
```json
"ember-cli": "~6.8.0",
"ember-source": "~6.8.0",
"ember-changeset": "^5.0.0",
"ember-changeset-validations": "^5.0.0",
"@warp-drive/build-config": "^5.8.2",
"@warp-drive/ember": "^5.8.2",
"@warp-drive/json-api": "^5.8.2",
"@warp-drive/legacy": "^5.8.2",
"@warp-drive/utilities": "^5.8.2",
"vite": "^7.3.1"
```

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.