2.0.2 • Published 2 years ago

mysql-typebox v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

mysql-typebox

Generate Typebox interfaces from MySQL database

Installation

Install mysql-typebox with npm

npm install mysql-typebox --save-dev

Usage/Examples

Create a file named mysql-typebox.json and fill it as follows (adjust to your needs):

{
  "host": "127.0.0.1",
  "port": 3306,
  "user": "root",
  "password": "secret",
  "database": "myapp"
}

Create User table:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `profile_picture` varchar(255) DEFAULT NULL,
  `role` enum('admin','user') NOT NULL,
  PRIMARY KEY (`id`)
);

Then run the command:

npx mysql-typebox

The above command will create a user.ts file with the following contents:

import { Type } from '@sinclair/typebox'
import type { Static } from '@sinclair/typebox'

export const user = Type.Object({
  id: Type.Number(),
  name: Type.String(),
  username: Type.String(),
  password: Type.String(),
  profile_picture: Type.Union([Type.String(), Type.Null()]),
  role: Type.Unsafe<'admin' | 'user'>({ type: 'string', enum: ['admin', 'user'] }),
})

export type userType = Static<typeof user>

Config

mysql-typebox.json

{
  "host": "127.0.0.1",
  "port": 3306,
  "user": "root",
  "password": "secret",
  "database": "myapp",
  "tables": ["User", "Log"],
  "ignore": ["Log"],
  "folder": "@typebox",
  "suffix": "table",
  "camelCase": false,
  "nullish": false,
  "requiredString": false
}
OptionDescription
tablesFilter the tables to include only those specified.
ignoreFilter the tables to exclude those specified.
folderSpecify the output directory.
suffixSuffix to the name of a generated file. (eg: user.table.ts)
camelCaseConvert all table names and their properties to camelcase. (eg: profile_picture becomes profilePicture)
nullishSet schema as nullish. Nullish schemas will accept both undefined and null
requiredStringAdd minLength: 1 for string schema
2.0.2

2 years ago

1.0.6

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago