Kamis, 28 Februari 2019

Script pada SQLiteBoy

Script pada SQLiteBoy dapat digunakan untuk mengotomatisasi pembuatan tabel (termasuk penambahan kolom untuk tabel yang sudah ada), form, report atau profil yang ditentukan pengguna. Script dapat diunggah dan dijalankan oleh admin.



- Catatan mengenai tabel:

   # Dukungan untuk membuat banyak tabel sekaligus

   # Untuk setiap tabel, pengembang script harus menentukan kolom yang valid

   # Untuk setiap kolom, pengembang script harus menentukan nama, jenis, dan flag

   # Jenis kolom yang valid: integer, real, char, varchar, text, blob, null

   # Flag kolom yang valid: 0, 1 (primary key), 2 (hanya untuk integer: primary key autoincrement)

   # Mendukung lebih dari satu primary key

   # Saat ini, nilai default belum didukung

   # Untuk tabel yang sudah ada, bisa dilakukan penambahan kolom

     * Pengembang dapat menentukan kolom dan hanya kolom yang tidak ada yang akan ditambahkan

     * Kolom yang sudah ada, jika ditentukan akan dibandingkan. Kesalahan terjadi jika ada ketidakcocokan antara tipe kolom baru dan tipe kolom yang ada.

- Catatan mengenai form dan report:

   # Dukungan untuk membuat banyak form dan report sekaligus

   # Kesalahan terjadi jika terdapat form atau report yang sudah ada

   # Harap baca artikel mengenai form atau artikel mengenai report lagi untuk info lebih lanjut.

Referensi Kode Script

  • Hanya nilai yang valid yang akan dibaca
  • Script tidak dapat dijalankan jika ada kesalahan
  • Jika ada pengecualian saat script berjalan, tabel apa pun yang baru dibuat (jika kosong) akan dihapus secara eksplisit. Namun, kolom yang baru ditambahkan tidak dapat dihapus dengan mudah.
  • Script dirancang untuk dijalankan hanya sekali
  • Harus sintaks JSON yang valid (json.org)
  • Terletak dalam satu file
  • String (termasuk keys di bawah) harus dikutip ganda (antara " dan ")
  • Tanda koma di akhir dictionary atau list tidak diijinkan. 
  • Setiap key adalah case-sensitive, di mana huruf besar/kecil dibedakan. 
  • Keys: 
Key
Deskripsi
Tipe
Status
Contoh
name
Nama script
string
Wajib
“script saya”
tables
Definisi tabel.
- List dari list (tabel) atau []

- Untuk tiap tabel: [“namatabel”, [kolom], …]

Untuk tiap [kolom]: [“nama”, “tipe”, flag]
list dari list
Wajib
forms
Definisi form.
- List dari list (form) atau []

- Untuk tiap form: [“namaform”, {kodeform}]

- kodeform: kode form yang valid (dict)

list dari list
Wajib
reports
Definisi report.
- List dari list (report) atau []

- Untuk tiap report: [“namareport”, {kodereport}]

- kodereport: kode report yang valid (dict)


list dari list
Wajib
profiles
Profil yang ditentukan pengguna
list
Opsional
info
Informasi script
string
Opsional
“Informasi Script”
author
Informasi pembuat script
string
Opsional
“© Author <email>”
license
Informasi lisensi
string
Opsional
“license”


Contoh Script


1. {
        "name": "script saya",
        "info": "Informasi Script",
        "author": "(c) Haikal <haikal1531041@sttpln.ac.id>",
        "license": "GPL",
        "tables": [
                        [
                            "new_table",
                            ["a", "integer", 1],
                            ["b", "integer", 1],
                            ["c", "integer", 1],
                            ["d", "text", 0]
                        ]
                    ],
        "forms": [
                    ],
        "reports": [
                    ]
    }

2. {
        "name": "script saya",
        "info": "Informasi Script",
        "author": "(c) Haikal <haikal1531041@sttpln.ac.id>",
        "license": "GPL",
        "tables": [
                        [
                            "new_table_1",
                            ["a", "integer", 1],
                            ["b", "integer", 1],
                            ["c", "integer", 1],
                            ["d", "text", 0]
                        ],
                        [
                            "new_table_2",
                            ["a", "integer", 2],
                            ["b", "integer", 0],
                            ["c", "integer", 0],
                            ["d", "text", 0]
                        ]
                    ],
        "forms": [
                        [
                            "new_form_1",
                            {
                              "title" : "Form 1",
                              "info"  : "Informasi Form",
                              "data"  : [
                                          {
                                            "table"     : "new_table_1",
                                            "column"    : "a"
                                          },
                                          {
                                            "table"     : "new_table_1",
                                            "column"    : "b"
                                          }
                                        ],
                              "security" : {
                                             "run" : ""
                                           }
                            }
                        ],
                        [
                            "new_form_2",
                            {
                              "title" : "Form 2",
                              "info"  : "Informasi Form",
                              "data"  : [
                                          {
                                            "table"     : "new_table_2",
                                            "column"    : "c"
                                          },
                                          {
                                            "table"     : "new_table_2",
                                            "column"    : "d"
                                          }
                                        ],
                              "security" : {
                                             "run" : ""
                                           }
                            }
                        ]
                    ],
        "reports": [
                        [
                            "new_report_1",
                            {
                              "title" : "Report 1",
                              "info"  : "Informasi Report",
                              "header": ["a", "b"],
                              "sql"   : "select a,b from new_table_1 a where a > $input_a or b > $input_b",
                              "data"  : [
                                          {
                                            "key"       : "input_a",
                                            "label"     : "column a >",
                                            "default"   : "0"
                                          },
                                          {
                                            "key"       : "input_b",
                                            "label"     : "column b >",
                                            "default"   : "0"
                                          }
                                        ],
                              "security" : {
                                             "run" : ""
                                           }
                            }
                        ]
                    ],
        "profiles": [
                      [
                         "company",
                         "Company",
                         "select id as a, name as b from company",
                         0
                      ],
                      [
                         "sqliteboy",
                         "Happy SQLiteBoy user?",
                         [ [0,"no :("], [1,"yes :)"] ],
                         1
                      ],
                      [
                         "signature",
                         "Signature",
                         0,
                         ""
                      ]
                    ]

    }

Selamat mencoba :).

Tidak ada komentar:

Posting Komentar