Separate
Separate Setting
Reason for separation
mysqlからSELECTするときとINSERTするときに、異なるオブジェクトを使いたい場合があるでしょう。例えば、id カラムがあるとします。selectではnullableではなく、insertではnullableにしたいとします。このような場合に使用します。
Configuration file
const options = {  separate: {    isSeparate: true,    insertPrefix: "insert",    insertSuffix: "",  },};module.exports = options;declared
- isSeparate - SELECTとINSERTでスキーマを分離するかどうか (default: false)
 - insertPrefix - SELECTとINSERTを区別するためのprefix (default: “insert”)
 - insertSuffix - SELECTとINSERTを区別するためのsuffix (default: "")
 
example
CREATE TABLE `todo` (  `id` int NOT NULL AUTO_INCREMENT,  `task` varchar(255) NOT NULL,  `completed` tinyint(1) NOT NULL DEFAULT '0',  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ciexport const todoSchema = z.object({  id: z.number(),  task: z.string(),  completed: z.number(),  created_at: z.date().nullish(),  updated_at: z.date().nullish(),});export type Todo = z.infer<typeof todoSchema>;export const insertTodoSchema = z.object({  id: z.number().nullish(), // <- nullable!  task: z.string(),  completed: z.number(),  created_at: z.date().nullish(),  updated_at: z.date().nullish(),});export type InsertTodo = z.infer<typeof insertTodoSchema>;使用法
const selectObj:Todo = {  id: 1,  task: "task",  completed: 0,  created_at: new Date(),  updated_at: new Date(),};
const insertObj:InsertTodo = {  task: "task",  completed: 0,};このオプションを使用すると、knexを使用してINSERTを行う際に、idなしでオブジェクトを作成することができます。