|
||
---|---|---|
.gitignore | ||
db_test.go | ||
db_test.js | ||
db.go | ||
db.ts | ||
go.mod | ||
LICENSE | ||
README.md |
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}