Go to file
Star 9cd64d91d0 add SetSSKey
add makeInKeys
2024-10-27 00:36:18 +08:00
.gitignore 1 2024-10-11 11:32:50 +08:00
db_test.go 1 2024-10-11 11:32:50 +08:00
db_test.js 1 2024-10-11 11:32:50 +08:00
db.go add SetSSKey 2024-10-27 00:36:18 +08:00
db.ts add SetSSKey 2024-10-27 00:36:18 +08:00
go.mod fix default db bug 2024-10-26 23:32:08 +08:00
LICENSE 1 2024-10-11 11:32:50 +08:00
README.md 1 2024-10-11 11:32:50 +08:00

db for GoJS

set db config in env.yml

db:
  default: sqlite3://test.db
  db2: mysql://root:zKeL8Qhs09tDvg4pYab0zg==@localhost:3306/test

more config see ssgo/db

set default connection can use db.query, db.xxxx directly

or set default connection by db.setDefault('sqlite3://test.db')

encrypt password

go install github.com/ssgo/tool/sskey@latest
sskey -e 'your password' | grep 'url base64'

use sskey to encrypt password, then use url base64 to encode it.

if you want use custom sskey secret

add code to your project

import "github.com/ssgo/db"
func setSSKey(key, iv []byte){
    db.SetEncryptKeys(key, iv)
}

generate setSSKey.go into your project

sskey -c your_secret_name
sskey -go your_secret_name > setSSKey.go

set db config in env for docker

docker run -e DB_DEFAULT=sqlite3://test.db -e DB2="mysql://root:zKeL8Qhs09tDvg4pYab0zg==@localhost:3306/test"

import db driver in use

_ "modernc.org/sqlite"
_ "github.com/go-sql-driver/mysql"

create or update db from simple description

import db from 'apigo.cc/gojs/db'

db.make(`
// Account

User                // User
id c12 PK           // User ID
phone v20 U         // Phone Number
password v80 n      // Password
salt v50            // Salt
name v100 n         // Name
serverKey v200      // Server Key
isValid b           // Is Valid

Device              // Device
id v30 PK           // Device ID
userId c12          // Current User
salt v50            // Salt
secretTime dt       // Secret Generation Time

// Log

LoginLog            // Login Log
id ubi AI           // Login ID
way v20             // Login Method (verifyCode/autoLogin/oneClickLogin)
userId c12 I        // Current User
deviceId v30 I      // Device ID
time dt I           // Login Time
userAgent v200      // Device Information
requestId v20       // Request ID
sessionId v20       // Session ID
successful b        // Was Successful
message v1024       // Failure Message
`)

field types

c   =>  char
v   =>  varchar
dt  =>  datetime
d   =>  date
tm  =>  time
i   =>  int
ui  =>  int unsigned
ti  =>  tinyint
uti =>  tinyint unsigned
b   =>  tinyint unsigned
bi  =>  bigint
ubi =>  bigint unsigned
f   =>  float
uf  =>  float unsigned
ff  =>  double
uff =>  double unsigned
si  =>  smallint
usi =>  smallint unsigned
mi  =>  middleint
umi =>  middleint unsigned
t   =>  text
bb  =>  blob

index (mulit field use I1 for make mulit index named 1)

PK  =>  PRIMARY KEY NOT NULL
AI  =>  PRIMARY KEY AUTOINCREMENT NOT NULL
I   =>  index
U   =>  unique
TI  =>  fulltext

more defile doc see ssgo/dao

example

import db from 'apigo.cc/gojs/db'
import console from 'console'

let r1 = db.query('select * from user limit 10')
console.log(r1.result)

let conn2 = db.get('db2')
let r2 = conn2.query('select * from user limit 10')
console.log(r2.result)

let conn3 = db.get('sqlite3://test.db')

module.exports

function get(dbName: string): DB {return null as any}
function setDefault(dbName: string): void {}
function make(descFileOrContent: string): Array<Object>{return null as any}
function query(sql: string, ...args:any): QueryResult{return null as any}
function query1(sql: string, ...args:any): QueryResult1{return null as any}
function query11(sql: string, ...args:any): QueryResult11{return null as any}
function exec(sql: string, ...args:any): ExecResult{return null as any}
function insert(table: string, data:Object): ExecResult{return null as any}
function replace(table: string, data:Object): ExecResult{return null as any}
function update(table: string, data:Object, where: string, ...args:any): ExecResult{return null as any}
function delete_(table: string, where: string, ...args:any): ExecResult{return null as any}
function destroy(): void{}
function begin(): Tx{return null as any}

full api see db.ts