最後活躍 1714309050

修訂 f0c12cd0acf01a8d12d9f782b201630b756fb234

mariadb.sql 原始檔案
1SELECT
2 'type ' || table_name || ' struct {' || CHR(10) || fields || CHR(10) || '}' AS models
3FROM
4 (
5 SELECT
6 table_name,
7 REPLACE(RTRIM(XMLAGG(XMLELEMENT(E, CHR(9) || column_name || CHR(9) || type_info || CHR(9) || annotation || CHR(10))).EXTRACT('//text()').GETCLOBVAL(), CHR(10)), '"', '"') AS fields
8 FROM
9 (
10 SELECT
11 REPLACE(INITCAP(table_name), '_', '') AS table_name,
12 REPLACE(INITCAP(column_name), '_', '') AS column_name,
13 CASE data_type
14 WHEN 'TIMESTAMP' THEN 'time.Time'
15 WHEN 'TIMESTAMP(6)' THEN 'time.Time'
16 WHEN 'TIMESTAMP WITH TIME ZONE' THEN 'time.Time'
17 WHEN 'TIMESTAMP WITH LOCAL TIME ZONE' THEN 'time.Time'
18 WHEN 'LONG' THEN 'int64'
19 WHEN 'NUMBER' THEN
20 CASE
21 WHEN data_precision IS NULL AND data_scale = 0 THEN 'int'
22 WHEN data_precision IS NOT NULL AND data_scale = 0 THEN 'int64'
23 ELSE 'float64'
24 END
25 WHEN 'FLOAT' THEN 'float32'
26 WHEN 'BINARY_FLOAT' THEN 'float32'
27 WHEN 'BINARY_DOUBLE' THEN 'float64'
28 WHEN 'CHAR' THEN 'string'
29 WHEN 'VARCHAR2' THEN 'sql.NullString'
30 WHEN 'NCHAR' THEN 'string'
31 WHEN 'NVARCHAR2' THEN 'string'
32 WHEN 'CLOB' THEN 'go_ora.Clob'
33 WHEN 'NCLOB' THEN 'go_ora.Nlob'
34 WHEN 'BLOB' THEN 'go_ora.Blob'
35 WHEN 'DATE' THEN 'go_ora.NullTimeStamp'
36 WHEN 'RAW' THEN '[]byte'
37 WHEN 'UNDEFINED' THEN 'database.OraUNDEFINED'
38 -- add your own type converters as needed or it will default to 'string'
39 ELSE 'UNKNOWN'
40 END AS type_info,
41 '`json:"' || column_name || '" db:"' || column_name || '"`' AS annotation
42 FROM all_tab_columns
43 WHERE owner = 'DELOPRO'
44 )
45 --WHERE type_info = 'UNKNOWN'
46 GROUP BY table_name
47 )
48--WHERE table_name = 'V8EventVw'
49ORDER BY table_name
oracle.sql 原始檔案
1SELECT
2 'type ' || table_name || ' struct {' || CHR(10) || fields || CHR(10) || '}' AS models
3FROM
4 (
5 SELECT
6 table_name,
7 REPLACE(RTRIM(XMLAGG(XMLELEMENT(E, CHR(9) || column_name || CHR(9) || type_info || CHR(9) || annotation || CHR(10))).EXTRACT('//text()').GETCLOBVAL(), CHR(10)), '"', '"') AS fields
8 FROM
9 (
10 SELECT
11 REPLACE(INITCAP(table_name), '_', '') AS table_name,
12 REPLACE(INITCAP(column_name), '_', '') AS column_name,
13 CASE data_type
14 WHEN 'TIMESTAMP' THEN 'time.Time'
15 WHEN 'TIMESTAMP(6)' THEN 'time.Time'
16 WHEN 'TIMESTAMP WITH TIME ZONE' THEN 'time.Time'
17 WHEN 'TIMESTAMP WITH LOCAL TIME ZONE' THEN 'time.Time'
18 WHEN 'LONG' THEN 'int64'
19 WHEN 'NUMBER' THEN
20 CASE
21 WHEN data_precision IS NULL AND data_scale = 0 THEN 'int'
22 WHEN data_precision IS NOT NULL AND data_scale = 0 THEN 'int64'
23 ELSE 'float64'
24 END
25 WHEN 'FLOAT' THEN 'float32'
26 WHEN 'BINARY_FLOAT' THEN 'float32'
27 WHEN 'BINARY_DOUBLE' THEN 'float64'
28 WHEN 'CHAR' THEN 'string'
29 WHEN 'VARCHAR2' THEN 'sql.NullString'
30 WHEN 'NCHAR' THEN 'string'
31 WHEN 'NVARCHAR2' THEN 'string'
32 WHEN 'CLOB' THEN 'go_ora.Clob'
33 WHEN 'NCLOB' THEN 'go_ora.Nlob'
34 WHEN 'BLOB' THEN 'go_ora.Blob'
35 WHEN 'DATE' THEN 'go_ora.NullTimeStamp'
36 WHEN 'RAW' THEN '[]byte'
37 WHEN 'UNDEFINED' THEN 'database.OraUNDEFINED'
38 -- add your own type converters as needed or it will default to 'string'
39 ELSE 'UNKNOWN'
40 END AS type_info,
41 '`json:"' || column_name || '" db:"' || column_name || '"`' AS annotation
42 FROM all_tab_columns
43 WHERE owner = 'DELOPRO'
44 )
45 --WHERE type_info = 'UNKNOWN'
46 GROUP BY table_name
47 )
48--WHERE table_name = 'V8EventVw'
49ORDER BY table_name
postgres.sql 原始檔案
1WITH models AS (
2 WITH data AS (
3 SELECT
4 replace(initcap(table_name::text), '_', '') table_name,
5 replace(initcap(column_name::text), '_', '') column_name,
6 CASE data_type
7 WHEN 'timestamp without time zone' THEN 'time.Time'
8 WHEN 'timestamp with time zone' THEN 'time.Time'
9 WHEN 'boolean' THEN 'bool'
10 WHEN 'bigint' THEN 'int64'
11 WHEN 'integer' THEN 'int'
12 WHEN 'ARRAY' THEN 'pgtype.Array[string]'
13 WHEN 'date' THEN 'pgtype.Date'
14 WHEN 'character varying' THEN 'string'
15 -- add your own type converters as needed or it will default to 'string'
16 ELSE 'UNKNOWN'
17 END AS type_info,
18 '`json:"' || column_name ||'"`' AS annotation
19 FROM information_schema.columns
20 WHERE table_schema IN ('public')
21 ORDER BY table_schema, table_name, ordinal_position
22 )
23 SELECT table_name, STRING_AGG(E'\t' || column_name || E'\t' || type_info || E'\t' || annotation, E'\n') fields
24 FROM data
25 GROUP BY table_name
26)
27SELECT 'type ' || table_name || E' struct {\n' || fields || E'\n}' models
28FROM models ORDER BY table_name