1 package main
2
3 import (
4 "fmt"
5 )
6
7 type M_Rcd map[string]string
8
9 type T_Tbl struct {
10 tblname string
11 record M_Rcd
12 }
13
14 type T_Kvdb struct {
15 dbname string
16 tbl []T_Tbl
17 }
18
19 func (this *T_Kvdb) c(db T_Kvdb) {
20 this.dbname = db.dbname
21 this.tbl = make([]T_Tbl, 5)
22 fmt.Printf("\ncreate db \"%s\" ok\n", this.dbname)
23 }
24
25 func (this *T_Kvdb) new(tblname string) T_Tbl {
26 var tbl T_Tbl
27 var length int
28 tbl.tblname = tblname
29 tbl.record = make(M_Rcd)
30
31 this.tbl = append(this.tbl, tbl)
32 length = len(this.tbl)
33 fmt.Printf("add new table \"%s\" to db \"%s\" ok\n", tblname, this.dbname)
34 return this.tbl[length-1]
35 }
36
37 func (this *T_Kvdb) destroy(tbl T_Tbl) {
38 for i, _ := range this.tbl {
39 if tbl.tblname == this.tbl[i].tblname {
40 this.tbl = append(this.tbl[:i], this.tbl[i+1:]...)
41 fmt.Println("destroy table ", tbl.tblname, " ok.\n")
42 return
43 }
44 }
45 fmt.Printf("no table \"%s\".\n", tbl.tblname)
46 }
47
48 func (this *T_Kvdb) read(key string, tbl T_Tbl) {
49 for i, _ := range this.tbl {
50 if tbl.tblname == this.tbl[i].tblname {
51 for k, v := range this.tbl[i].record {
52 if k == key {
53 fmt.Println("{", v, "}")
54 return
55 }
56 }
57 }
58 }
59 fmt.Println("error, instance")
60 }
61
62 func (this *T_Kvdb) write(key string, value string, tbl T_Tbl) {
63 fmt.Printf("add {%s,%s} to table \"%s\"", key, value, tbl.tblname)
64 for i, _ := range this.tbl {
65 if tbl.tblname == this.tbl[i].tblname {
66 this.tbl[i].record[key] = value
67 for k, v1 := range this.tbl[i].record {
68 fmt.Print("{", k, ",", v1, "}")
69 }
70 fmt.Printf("\n")
71 return
72 }
73 }
74 fmt.Print("no table \n", tbl.tblname)
75 }
76
77 func (this *T_Kvdb) delete(key string, tbl T_Tbl) {
78 fmt.Printf("delete %s from table %s\n", key, tbl.tblname)
79 fmt.Printf("[")
80 for i, _ := range this.tbl {
81 if tbl.tblname == this.tbl[i].tblname {
82 delete(this.tbl[i].record, key)
83 for k, v1 := range this.tbl[i].record {
84 fmt.Print("{", k, ",", v1, "}")
85 }
86 fmt.Printf("]\n")
87 return
88 }
89 }
90 }
91
92 func (this *T_Kvdb) match(value string, tbl T_Tbl) {
93 var value_in []string
94
95 for i, _ := range this.tbl {
96 if tbl.tblname == this.tbl[i].tblname {
97 for k, v1 := range this.tbl[i].record {
98 if v1 == value {
99 value_in = append(value_in, k)
100 }
101 }
102 fmt.Printf("%v\n", value_in)
103 return
104 }
105 }
106 value_in = append(value_in, "]")
107 fmt.Printf("%v\n", value_in)
108 }
109
110 func (this *T_Kvdb) show() {
111 fmt.Print("show [")
112 for i, _ := range this.tbl {
113 for k, v1 := range this.tbl[i].record {
114 fmt.Print("{", k, ",", v1, "}")
115 }
116 }
117 fmt.Print("]\n\n")
118 }