tools.aw_id

Yohn Y. 2025-05-29 Parent:5ba13dd7ef05 Child:041713361fca

14:74721178aed9 Go to Latest

tools.aw_id/src/main.go

.. v1.r202505.2 + обозначение vssa для автоматизированной версии без мажорной части

History
1 // devel.a0fs.ru -- aw_id -- v1.r202505.2 //
2 /*
3 Утилиты генерирования полезных в работе ID
4 */
5 package main
7 import (
8 "fmt"
9 "os"
10 "time"
12 "strconv"
14 "github.com/google/uuid"
15 "github.com/oleg-vasiliev/uuid7"
16 )
18 const (
19 TIME_ID = iota
20 TIME_HUM
21 TIME_HUM_RU
22 TIME_HUM_SAFE
23 TIME_HUM_SAFE2
24 TIME_ID_SHORT
25 TIME_ID_SHORT2
26 )
28 func get_time_id(id_type int) string {
29 cur_time := time.Now()
30 var time_format string = time.RFC3339
32 switch id_type {
33 case TIME_ID:
34 time_format = "20060102-150405"
35 case TIME_HUM_RU:
36 time_format = "02.01.2006 15:04:05"
37 case TIME_HUM:
38 time_format = "2006-01-02 15:04:05"
39 case TIME_HUM_SAFE:
40 time_format = "2006-01-02 15-04-05"
41 case TIME_HUM_SAFE2:
42 time_format = "2006-01-02_15-04-05"
43 case TIME_ID_SHORT:
44 time_format = "20060102"
45 case TIME_ID_SHORT2:
46 time_format = "200601"
47 }
49 return cur_time.Format(time_format)
50 }
52 func get_uuid() string {
53 res := uuid.New()
54 return res.String()
55 }
57 func get_uuid7() string {
58 res, err := uuid7.New()
60 if err != nil {
61 return "00000000-0000-0000-0000-000000000000"
63 } else {
64 return res.String()
66 }
67 }
69 func get_ver_id() string {
70 return fmt.Sprintf("v0.r%s.1", get_time_id(TIME_ID_SHORT2))
71 }
73 func get_ver_id2() string {
74 return fmt.Sprintf("0.%s.1", get_time_id(TIME_ID_SHORT2))
75 }
77 func get_ver_auto_tag() string {
78 const CDB uint64 = 62
79 var auto_version []byte = []byte{
80 '0', '0', '0',
81 '0', '0', '0'}
83 var CD [CDB]byte = [CDB]byte{'0', '1', '2', '3', '4', '5', '6',
84 '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
85 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
86 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
87 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
88 't', 'u', 'v', 'w', 'x', 'y', 'z'}
90 buf_time := time.Now()
91 buf_u64, err := strconv.ParseUint(buf_time.Format("02150405"), 10, 64)
92 if err == nil {
93 buf_u64 = buf_u64*uint64(100) + uint64(buf_time.Nanosecond()/10000000)
94 if err == nil {
95 var buf_u64_idx uint64
96 var ar_idx uint = 5
98 for buf_u64 >= CDB && ar_idx > 0 {
99 buf_u64_idx = buf_u64 % CDB
100 buf_u64 /= CDB
101 auto_version[ar_idx] = CD[buf_u64_idx]
102 ar_idx--
105 if buf_u64 >= CDB {
106 panic(fmt.Sprintf("get_ver_auto_tag: Need more size in buffer, value %v > %v", buf_u64, CDB))
108 } else {
109 auto_version[ar_idx] = CD[buf_u64]
116 return string(auto_version)
119 func get_ver_id3() string {
120 return fmt.Sprintf("v0.r%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag())
123 func get_ver_id4() string {
124 return fmt.Sprintf("0.%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag())
127 func get_ver_id4_s() string {
128 return fmt.Sprintf("%s.%s", get_time_id(TIME_ID_SHORT2), get_ver_auto_tag())
131 func prnt_out(k, v string) {
132 fmt.Printf("%10s : %s\n", k, v)
135 func make_all_ids() {
136 prnt_out("uuid", get_uuid())
137 prnt_out("uuid7", get_uuid7())
138 prnt_out("ts", get_time_id(TIME_ID))
139 prnt_out("tss", get_time_id(TIME_ID_SHORT))
140 prnt_out("tss2", get_time_id(TIME_ID_SHORT2))
141 prnt_out("hr", get_time_id(TIME_HUM))
142 prnt_out("hrr", get_time_id(TIME_HUM_RU))
143 prnt_out("hrs", get_time_id(TIME_HUM_SAFE))
144 prnt_out("hrs2", get_time_id(TIME_HUM_SAFE2))
145 prnt_out("v", get_ver_id())
146 prnt_out("va", get_ver_id3())
147 prnt_out("vs", get_ver_id2())
148 prnt_out("vsa", get_ver_id4())
149 prnt_out("vssa", get_ver_id4_s())
150 fmt.Println("")
153 func main() {
154 if len(os.Args) > 1 {
155 switch os.Args[1] {
156 case "uuid":
157 fmt.Println(get_uuid())
158 case "uuid7":
159 fmt.Println(get_uuid7())
160 case "ts":
161 fmt.Println(get_time_id(TIME_ID))
162 case "hr":
163 fmt.Println(get_time_id(TIME_HUM))
164 case "hrr":
165 fmt.Println(get_time_id(TIME_HUM_RU))
166 case "hrs":
167 fmt.Println(get_time_id(TIME_HUM_SAFE))
168 case "hrs2":
169 fmt.Println(get_time_id(TIME_HUM_SAFE2))
170 case "tss":
171 fmt.Println(get_time_id(TIME_ID_SHORT))
172 case "tss2":
173 fmt.Println(get_time_id(TIME_ID_SHORT2))
174 case "v":
175 fmt.Println(get_ver_id())
176 case "va":
177 fmt.Println(get_ver_id3())
178 case "vs":
179 fmt.Println(get_ver_id2())
180 case "vsa":
181 fmt.Println(get_ver_id4())
182 case "vssa":
183 fmt.Println(get_ver_id4_s())
184 default:
185 fmt.Println("Need one of: ")
186 fmt.Println(" uuid, uuid7, ts, tss, tss2, hr, hrr, hrs, hrs2,")
187 fmt.Println(" v, va, vs, vsa vssa")
189 fmt.Println("")
190 } else {
191 make_all_ids()