Script Generate Class Entity C# In PostgreSQL - ARTIKEL SALIM TEKNOLOGI

Latest

Artikel Bermanfaat Untuk Kita Semua

Minggu, 16 Mei 2021

Script Generate Class Entity C# In PostgreSQL

 


Script Postgresql :
  DO $$
DECLARE v_tabela varchar;
DECLARE v_cursor_colunas record;
DECLARE v_nome_coluna varchar;
DECLARE v_classe VARCHAR;
DECLARE v_tipo VARCHAR;
DECLARE v_schema_name VARCHAR;

BEGIN
  v_schema_name := 'public';
  v_tabela := 'tb_user_marketplace';
 
  select table_name INTO v_tabela from information_schema.tables where table_schema = v_schema_name
  and table_type = 'BASE TABLE'
  and table_name = v_tabela; 

   v_classe := E'\r\n' || '[Table("' || v_tabela || '", Schema = "' || v_schema_name || '")]' ||  E'';
   v_classe := v_classe || E'\r\n' || 'public class ' || replace(initcap(replace(v_tabela, '_', ' ')), ' ', '') || ' {' ||  E'\r\n';
   FOR v_cursor_colunas IN
	SELECT column_name as coluna, is_nullable as isnull, data_type as tipo, character_maximum_length as tamanho
	FROM information_schema.columns
	WHERE table_schema = v_schema_name
	AND table_name   = v_tabela
   LOOP
      --TIPOS
      IF v_cursor_colunas.tipo='character varying' THEN
        v_tipo:= 'string';
      ELSIF v_cursor_colunas.tipo='character' and v_cursor_colunas.tamanho=1 THEN
        v_tipo:= 'char';
      ELSIF v_cursor_colunas.tipo='character' and v_cursor_colunas.tamanho=1 THEN
        v_tipo:= 'string';
      ELSIF v_cursor_colunas.tipo='timestamp with time zone' OR v_cursor_colunas.tipo='timestamp without time zone' THEN
        v_tipo:= 'DateTime';
        IF v_cursor_colunas.isnull = 'YES' THEN
            v_tipo:= v_tipo || '?';
        END IF;
      ELSIF v_cursor_colunas.tipo='boolean' THEN
        v_tipo:= 'bool';
      ELSIF v_cursor_colunas.tipo='integer' THEN
        v_tipo:= 'int';
        IF v_cursor_colunas.isnull = 'YES' THEN
            v_tipo:= v_tipo || '?';
        END IF;
      ELSIF v_cursor_colunas.tipo='numeric' THEN
        v_tipo:= 'double';
      ELSIF v_cursor_colunas.tipo='text' OR v_cursor_colunas.tipo='date' THEN
        v_tipo:= 'string';
      ELSE
		v_tipo:= 'another';
      END IF;
      
      --ATRIBUTES
      v_nome_coluna := v_cursor_colunas.coluna;
      v_classe := v_classe || '[Column("'|| v_cursor_colunas.coluna || '")]' || E'\r\n';

      --PROPERTIES
	  
      v_classe := v_classe || 'public ' || v_tipo || ' ' || replace(initcap(replace(v_cursor_colunas.coluna, '_', ' ')), ' ', '') || '{' || E'';
      v_classe := v_classe || ' get;' || E'';
      v_classe := v_classe || ' set;' || E'';
      v_classe := v_classe || ' }' || E'\r\n';
      
   END LOOP;
   v_classe := v_classe || E'' || '}';
   
  RAISE NOTICE '%' , v_classe;

END $$;


Tidak ada komentar:

Posting Komentar