Como criar um cadastro de usuario? Me ajudem dando dicas

Estou criando um pequeno crud de usuarios e me bateu uma duvida estou desenvolvendo corretamente? Gostaria que pudessem me dar um norte e me ajudar a como desenvolver ,eu crud.

Contexto: É uma rota feita em nodejs com ts, express, knex e pg. Resgistra um usuario e salva informações em duas tabelas.

Segue o banco

CREATE TABLE "usuario_login" (
  "id_usuario" serial PRIMARY KEY,
  "nome_usuario" varchar(255) NOT NULL,
  "senha_usuario" varchar(255) NOT NULL
);

CREATE TABLE "usuario_info" (
  "id" serial PRIMARY KEY,
  "id_usuario" integer,
  "nome" varchar(255),
  "data_cadastro" timestamp DEFAULT 'current_timestamp',
  "pontos" integer,
  "email" varchar(255),
  "github" varchar(255),
  "linkedin" varchar(255)
);

Segue o código que desenvolvi para fazer o registro:

import { Request, Response } from "express";
import { knex } from "../config/conexaoDB";
import { hashSync } from "bcrypt";

export const registro = async (request: Request, response: Response) => {
    const { nome_usuario, senha_usuario } = request.body
    const { nome, email, github, linkedin } = request.body

    try {
        const salt: number = Number(process.env.SALT)
        const senha = hashSync(senha_usuario, salt)

        const id = await knex('usuario_login')
            .insert({
                nome_usuario,
                senha_usuario: senha
            }).returning('id_usuario')

        const user = await knex('usuario_info')
            .insert({
                id_usuario: id[0].id_usuario,
                nome,
                pontos: 0,
                email: email || '',
                github: github || '',
                linkedin: linkedin || '',
            }) .returning('*')

        return response.status(201).json(user)

    } catch (error) {
        console.log(error)
        return response.status(500).json({Mensagem: "Erro interno do servidor!"})
    }
}

export const login = async (request: Request, response: Response) => {

}

Aceito todo tipo de dicas para melhorar meu desenvolvimento.

Se for para um projeto sério, você tem problemas em colocar tudo dentro da definição das rotas, não tem um controller, service, repository... colocar tudo em uma função apenas é bem tentador mas a manutenção e entendimento do código é horrível e custoso.

Além disso, não há qualquer validação dos dados informados. Nunca confie nos dados vindos de fora da sua aplicação.

Para criar um cadastro de usuário, acho que precisa de uma rota para criar o usuário, antes de tudo