Javascript CRUD Admin for Spring-Data HATEOAS后端

问题描述 投票:5回答:1

我们正在使用一个Spring-Boot Spring-Data后端,该后端利用带有@RepositoryRestResource注释的JPARepositories。我们希望通过javascript前端管理这些存储库中的表(例如CRUD),而无需完成编码工作。我们调查了各种替代方案,如LightAdmin,JHipster和ng-admin。

我们无法使LightAdmin工作,因为它依赖于比我们正在运行的更旧版本的Spring-Data。它与最新和最好的Spring-Data版本不兼容。

我们尝试了JHipster,但它支持我们不想要的所有服务和控制器,因为@RepositoryRestResource免费提供给你。

我们尝试使用ng-admin,但它在HATEOAS的上下文中效果不佳;我们不得不投入太多的映射来使它只能部分工作。

所以我的问题是这个。是否有类似于ng-admin,JHipster和LightAdmin的产品,这将允许我们轻松地CRUD我们的@RepositoryRestResource JPA存储库,这样我们就不必编写样板CRUD代码了?

spring-data jhipster hateoas ng-admin lightadmin
1个回答
-1
投票
may be you can use my awesome code :


db.js 

const sqlite3 = require("sqlite3").verbose()
const db = new sqlite3.Database("./book.db")

module.exports = db

setup.js

const db = require("./db.js")

const query = [
    `
    CREATE TABLE IF NOT EXISTS
    contacts (
        contactID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        name TEXT,
        company TEXT,
        telephone TEXT,
        email TEXT UNIQUE
    )`,
    `
    CREATE TABLE IF NOT EXISTS
    groups (
        groupID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        name TEXT
    )`,
    `
    CREATE TABLE IF NOT EXISTS
    group_contacts (
        group_contactsID  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        contactID INTEGER NOT NULL,
        groupID INTEGER NOT NULL,
        FOREIGN KEY(contactID) REFERENCES contacts(contactID),
        FOREIGN KEY(groupID) REFERENCES groups(groupID)

    )`
]

for (let i = 0; i < query.length; i++){
    db.run(query[i], (err) =>{
        console.log(err)
    })
}

index.js

const controller = require("./controller.js")
let input = process.argv.slice(2)
let cmd = input[0]
let data = input.slice(1)

switch(cmd){
    case "createContact":
    controller.createContact(data)
    break

controller.js

const contact = require("./model/contact.js")
const group = require("./model/group.js")
const groupContact = require("./model/contact-group.js")
const view = require("./view.js")
class Controller{
    static createContact(data){
        contact.create(data, (err, output) => {
            if (err){
                view.createError(err)
            } else {
                view.createSuccess(output)
            }
        })
    }
    static readContact(data){
        contact.read(data, (err, output) => {
            if (err){
                view.readError(err)
            } else {
                view.readSuccess(output)
            }
        })  
    }
    static updateContact(data){
        contact.update(data, (err) => {
            if (err){
                view.updateError(err)
            } else {
                view.updateSuccess(data)
            }
        })
    }
    static deleteContact(data){
        contact.delete(data, (err) => {
            if (err){
                view.deleteError(err)
            } else {
                view.deleteSuccess(data[0])
            }
        })
    }
}
module.exports = Controller

model.js

const db = require("../db.js")
class Contact{
    constructor(name, company, phone, email){
        this.name = name
        this.company = company
        this.telephone = phone
        this.email = email
    }
    static create(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let newContact = new Contact(data[0], data[1], data[2], data[3])
                let query = `
                INSERT INTO contacts (name, company, telephone, email) 
                VALUES ('${data[0]}', '${data[1]}', '${data[2]}', '${data[3]}')`
                db.run(query, (err) => {
                    if (err){
                        cb(err, null)
                    } else {
                        cb(null, newContact)
                    }
                })
            }
        })
    }
    static update(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                UPDATE contacts SET ${data[1]} = '${data[2]}' WHERE contactID = ${data[0]}`
                db.get(query, (err) => {
                    if (err){
                        cb(err)
                    } else {
                        cb(null)
                    }
                })
            }
        })
    }
    static read(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                SELECT contactID, name, company, telephone, email FROM contacts WHERE contactID = ${data[0]}`
                db.get(query, (err, result) => {
                    if (err){
                        cb(err, null)
                    } else {
                        cb(null, result)
                    }
                })
            }
        })
    }
    static delete(data, cb){
        db.serialize((err) => {
            if (err){
                cb(err, null)
            } else {
                let query = `
                DELETE FROM contacts WHERE contactID = ${data[0]}`
                db.get(query, (err) => {
                    if (err){
                        cb(err)
                    } else {
                        cb(null)
                    }
                })
            }
        })
    }
}

module.exports = Contact

view.js


class View {
    static createError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static createSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static readError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static readSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static updateError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static updateSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static deleteError(err){
        console.log(err)
        console.log('=====> ERROR')
    }
    static deleteSuccess(output){
        console.log(output)
        console.log('=====> SUCCESS')
    }
    static undefined(output){
        console.log(output)
        console.log('=====> UNDEFINED')
    }

}

module.exports = View
© www.soinside.com 2019 - 2024. All rights reserved.