{"library":"rik-database","title":"RIK Database ORM","description":"RIK Database is a TypeScript-first Object-Relational Mapper (ORM) designed specifically for a project named 'RIK'. It provides a structured, object-oriented interface for interacting with PostgreSQL databases, leveraging an underlying SQL query builder (likely Knex.js). The library offers models such as `Version`, `NetworkInterfaceSettings`, and `Plst`, along with associated interfaces, to manage database operations including querying, insertion, updating, and deletion. Currently at version 1.4.5, it appears to be actively maintained, offering type-safe interactions for its specific domain. Its key differentiator is its tailored design for the 'RIK' project, meaning it might come with predefined schema assumptions or conventions that align with that project's needs, distinguishing it from general-purpose ORMs.","language":"javascript","status":"active","last_verified":"Thu Apr 23","install":{"commands":["npm install rik-database"],"cli":null},"imports":["import { Version } from 'rik-database';","import { DbSettings } from 'rik-database';","import { INetworkInterfaceSettings } from 'rik-database';","import { Rik } from 'rik-database';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { DbSettings, Version, IVersion, NetworkInterfaceSettings } from 'rik-database';\nimport { createRequire } from 'module';\n\n// Emulate CommonJS require for .env support in ESM context, or use dotenv directly\nconst require = createRequire(import.meta.url);\nrequire('dotenv').config();\n\nconst dbConfig = {\n    client: process.env.DB_CLIENT || 'pg',\n    connection: {\n        host: process.env.DB_HOST || 'localhost',\n        user: process.env.DB_USER || 'user',\n        password: process.env.DB_PASSWORD || 'password',\n        database: process.env.DB_NAME || 'databaseName',\n        port: process.env.DB_PORT ? parseInt(process.env.DB_PORT, 10) : 5432\n    },\n    pool: {\n        min: 2,\n        max: 10\n    }\n};\n\n// Initialize database settings\nDbSettings.setConfig(dbConfig);\n\nclass DatabaseOperations {\n    public async demonstrateOperations(): Promise<void> {\n        console.log('--- Demonstrating RIK Database ORM Operations ---');\n\n        // Get current version data\n        let currentVersion = await Version.query().orderBy('id', 'desc').first();\n        console.log('\\n+------- Current Version -------+');\n        if (currentVersion) {\n            console.log(currentVersion);\n        } else {\n            console.log('Version table is empty. Adding initial version.');\n            const initialVersion: IVersion = { id: 1, name: 'Initial Version', number: '1.0.0', date: new Date().toISOString() };\n            await Version.query().insert(initialVersion);\n            currentVersion = await Version.query().orderBy('id', 'desc').first();\n            console.log(currentVersion);\n        }\n\n        // Add a new version\n        const newVersionData: IVersion = { name: 'Feature Update', number: '1.1.0', date: new Date().toISOString() };\n        const newVersion = await Version.query().insert(newVersionData);\n        console.log('\\nNew version has been added. Version ID:', newVersion.id);\n\n        // Update a version\n        if (currentVersion) {\n            const updatedVersionData: Partial<IVersion> = { name: 'Patched Feature Update' };\n            const updatedVersion = await Version.query().patchAndFetchById(newVersion.id, updatedVersionData);\n            console.log('\\nVersion has been updated. Version:', updatedVersion);\n        }\n\n        // Insert multiple network settings with model instantiation\n        try {\n            const settingsToInsert = [\n                new NetworkInterfaceSettings({\n                    name: 'eth0', method_name: 'dhcp', ip_address: '0.0.0.0', gateway: '0.0.0.0'\n                }),\n                new NetworkInterfaceSettings({\n                    name: 'eth1', method_name: 'static', ip_address: '192.168.1.100', gateway: '192.168.1.1'\n                })\n            ];\n            const insertedSettings = await NetworkInterfaceSettings.query().insert(settingsToInsert);\n            console.log('\\nInserted Network Settings:', insertedSettings);\n        } catch (error) {\n            console.error('[DatabaseOperations:demonstrateOperations]: Error inserting settings:', error);\n        }\n\n        // Delete a version\n        if (newVersion) {\n            const deletedCount = await Version.query().deleteById(newVersion.id);\n            console.log(`\\nDeleted ${deletedCount} version(s) with ID ${newVersion.id}.`);\n        }\n\n        console.log('\\n--- RIK Database ORM Operations Complete ---');\n    }\n}\n\n// To run this example, ensure you have a .env file with DB_CLIENT, DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT.\n// Example .env:\n// DB_CLIENT=pg\n// DB_HOST=localhost\n// DB_USER=myuser\n// DB_PASSWORD=mypassword\n// DB_NAME=mydb\n// DB_PORT=5432\n\nconst app = new DatabaseOperations();\napp.demonstrateOperations().catch(console.error);\n","lang":"typescript","description":"This quickstart demonstrates basic CRUD (Create, Read, Update, Delete) operations using the `rik-database` ORM, including configuring the database connection, interacting with `Version` and `NetworkInterfaceSettings` models, and handling multiple inserts. It shows how to use named imports and instantiate models for data insertion.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}