UNPKG

@fewer/adapter-postgres

Version:

A Fewer database adapter to connect to Postgres

90 lines 3.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fewer_1 = require("fewer"); const __1 = require(".."); const config_1 = __importDefault(require("./config")); const setup_1 = require("./setup"); function getSchemaAndRepos(database) { const schema = fewer_1.createSchema() .table(database, 'users', { primaryKey: 'id' }, t => ({ id: t.bigserial(), first_name: t.string(), last_name: t.string(), })) .table(database, 'posts', { primaryKey: 'id' }, t => ({ id: t.bigserial(), title: t.string(), user_id: t.bigint(), subtitle: t.string(), })); const Users = fewer_1.createRepository(schema.tables.users); const Posts = fewer_1.createRepository(schema.tables.posts); const userPosts = fewer_1.createHasMany(Users, Posts, 'user_id'); const belongsToUser = fewer_1.createBelongsTo(Users, 'user_id'); return { schema, Users, Posts, userPosts, belongsToUser, }; } describe('load associations', () => { describe('postgres', () => { let database; let adapter; beforeEach(async () => { await setup_1.prepare(); adapter = new __1.Adapter(config_1.default); database = fewer_1.createDatabase({ adapter }); await database.connect(); const migration = fewer_1.createMigration(1, database, { change: (m, t) => m .createTable('users', { primaryKey: 'id' }, { id: t.bigserial(), first_name: t.string(), last_name: t.string(), }) .createTable('posts', { primaryKey: 'id' }, { id: t.bigserial(), user_id: t.bigint(), title: t.string(), subtitle: t.string(), }), }); await migration.run('up'); }); afterEach(async () => { await database.disconnect(); }); it('can load associated posts on users', async () => { const dbTypes = getSchemaAndRepos(database); const emilyId = await dbTypes.Users.create({ first_name: 'Emily', last_name: 'Dobervich', }); const jordanId = await dbTypes.Users.create({ first_name: 'Jordan', last_name: 'Gensler', }); await dbTypes.Posts.create({ user_id: emilyId.id, title: 'How to use Fewer', }); await dbTypes.Posts.create({ user_id: jordanId.id, title: 'Abusing Typescript', }); await dbTypes.Posts.create({ user_id: jordanId.id, title: 'Ten Typescript Type Tricks', }); const results = await dbTypes.Users.load('posts', dbTypes.userPosts); expect(results).toMatchSnapshot(); }); }); }); //# sourceMappingURL=loadAssociation.test.js.map