Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/components/rental.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/>
<div class="details">
<h3>
<LinkTo @route="rental" @model={{@rental}}>
<LinkTo @route="rental" @model={{@rental.id}}>
{{@rental.title}}
</LinkTo>
</h3>
Expand Down
Empty file removed app/models/.gitkeep
Empty file.
22 changes: 0 additions & 22 deletions app/models/rental.js

This file was deleted.

33 changes: 33 additions & 0 deletions app/schemas/rental.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import { withDefaults } from '@warp-drive/schema-record';
import { Type } from '@warp-drive/core-types/symbols';

const COMMUNITY_CATEGORIES = ['Condo', 'Townhouse', 'Apartment'];

function rentalType(record) {
if (COMMUNITY_CATEGORIES.includes(record.category)) {
return 'Community';
} else {
return 'Standalone';
}
}
rentalType[Type] = 'rentalType';

const RentalSchema = withDefaults({
type: 'rental',
fields: [
{ kind: 'field', name: 'title' },
{ kind: 'field', name: 'owner' },
{ kind: 'field', name: 'city' },
{ kind: 'field', name: 'location' },
{ kind: 'field', name: 'category' },
{ kind: 'field', name: 'image' },
{ kind: 'field', name: 'bedrooms' },
{ kind: 'field', name: 'description' },
{ kind: 'derived', type: 'rentalType', name: 'type' },
],
});

export function register(schema) {
schema.registerDerivation(rentalType);
schema.registerResource(RentalSchema);
}
2 changes: 2 additions & 0 deletions app/services/request-manager.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import BaseRequestManager from '@ember-data/request';
import Fetch from '@ember-data/request/fetch';
import { JsonSuffixHandler } from 'super-rentals/utils/handlers';
import { CacheHandler } from '@ember-data/store';

export default class RequestManager extends BaseRequestManager {
constructor(args) {
super(args);

this.use([JsonSuffixHandler, Fetch]);
this.useCache(CacheHandler);
}
}
37 changes: 36 additions & 1 deletion app/services/store.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,41 @@
import BaseStore from 'ember-data/store';
import BaseStore from '@ember-data/store';
import { service } from '@ember/service';
import {
instantiateRecord,
teardownRecord,
registerDerivations,
SchemaService,
} from '@warp-drive/schema-record';
import { register as registerRental } from '../schemas/rental';
import { CachePolicy } from '@ember-data/request-utils';
import JSONAPICache from '@ember-data/json-api';

export default class Store extends BaseStore {
@service requestManager;

lifetimes = new CachePolicy({
apiCacheHardExpires: 1000 * 60 * 60 * 48, // 48 hours
apiCacheSoftExpires: 1000 * 60 * 60, // 1 hour
});

createSchemaService() {
const schema = new SchemaService();

registerDerivations(schema);
registerRental(schema);

return schema;
}

createCache(capabilites) {
return new JSONAPICache(capabilites);
}

instantiateRecord(identifier, createArgs) {
return instantiateRecord(this, identifier, createArgs);
}

teardownRecord(record) {
return teardownRecord(record);
}
}
10 changes: 7 additions & 3 deletions ember-cli-build.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,13 @@

const EmberApp = require('ember-cli/lib/broccoli/ember-app');

module.exports = function (defaults) {
const app = new EmberApp(defaults, {
// Add options here
module.exports = async function (defaults) {
const { setConfig } = await import('@warp-drive/build-config');

const app = new EmberApp(defaults, {});

setConfig(app, __dirname, {
compatWith: '99.0',
});

return app.toTree();
Expand Down
5 changes: 5 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@
"@ember/optional-features": "^2.2.0",
"@ember/string": "^4.0.0",
"@ember/test-helpers": "^4.0.4",
"@ember/test-waiters": "^4.1.0",
"@eslint/js": "^9.17.0",
"@glimmer/component": "^1.1.2",
"@glimmer/tracking": "^1.1.2",
"@warp-drive/schema-record": "^0.0.2",
"broccoli-asset-rev": "^3.0.0",
"concurrently": "^9.1.0",
"ember-auto-import": "^2.10.0",
Expand Down Expand Up @@ -75,6 +77,9 @@
"tracked-built-ins": "^3.4.0",
"webpack": "^5.97.1"
},
"resolutions": {
"@ember/test-waiters": "^4.1.0"
},
"engines": {
"node": ">= 18"
},
Expand Down
Loading