1.0.0 • Published 4 years ago

sanakirju-objectionjs v1.0.0

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

Sanakirju Objection.js

Objection.js / SQL implementation of Sanakirju, a Karelian - Finnish dictionary with over 90 000 words. Based on data from Karjalan Kielen Sanakirja. Provides migration & model for Knex supported SQL databases, like PostgreSQL, MySQL, MariaDB or SQLite.

Install

yarn add sanakirju-objectionjs

You also need to install the database driver you're going to use.

npm install pg
npm install sqlite3
npm install mysql
npm install mysql2

Usage

sanakirju-objectionjs uses the core sanakirju to fetch all the dictionary data from XML files.

Set up database.
const { toObjection } = require('sanakirju-objectionjs')

// Your Knex config. DO NOT define "migrations" folder".
const knexConf = {
  client: 'sqlite3',
  useNullAsDefault: true,
  connection: {
    filename: './local.db',
  },
  pool: {
    afterCreate: (conn, cb) => {
      conn.run('PRAGMA foreign_keys = ON', cb);
    },
  },
}

/**
 * Pass your config & populate the database.
 * Might take a minute.
 */
 try {
     const res = await toObjection(knexConf)
     console.log(res)
 } catch(err) {
     console.log(err)
 }
Query the database

Open connection, use the Model to do any Objection.js query.

const { Model, connection } = require('sanakirju-objectionjs')

const config = { // Your Knex conf }

/**
 * Open connection somewhere in your app.
 * You are free to open connection without Sanakirju too.
 */
await connect(knexConf)


// Query some data with
const aWords = await Model.query()
    .select('word', 'definition')
    .where('startsWith', 'a')
    .orderBy('word');

const sWordsWithExamples = await Model.query().withGraphFetched('examples')
    .select('word', 'definition')
    .where('startsWith', 's')
    .orderBy('word');
Model

Sanakirju provides the following data for the model:

Word:
{
  type: 'object',
  required: ['word'],

  properties: {
    id: { type: 'integer' },
    word: { type: 'string' },
    definition: { type: 'string' },
    startsWith: { type: 'string' },
  }

Sources.

Words & translations are from Karjalan Kielen Sanakirja created by Institute for the Languages of Finland. The original material is licenced under Creative Commons International (CC BY 4.0).