/*****************************************************************************
 *
 * FILE:	db_sqlite.c
 * DESCRIPTION:	operate database with SQLite3
 * DATE:	Mon, May  3 2004
 * UPDATE:	Mon, Aug 20 2007
 * AUTHOR:	Kouichi ABE (WALL) / °¤Éô¹¯°ì
 * E-MAIL:	kouichi@MysticWALL.COM
 * URL:		http://www.MysticWALL.COM/
 * COPYRIGHT:	(c) 2004-2007 °¤Éô¹¯°ì¡¿Kouichi ABE (WALL), All rights reserved.
 * COMPILE:	gcc -export-dynamic db_sqlite.c -o db_sqlite.cgi
 *		-I/usr/local/include -L/usr/local/lib
 *		-lcockatrice -lcatoblepas -lwkf -lmd
 * $Id: address.c,v 1.1 2007/08/19 16:50:38 kouichi Exp $
 *
 *****************************************************************************/

#include <stdio.h>
#include <string.h>
#include <cockatrice.h>
#include <catoblepas.h>

/*
  BEGIN;
  CREATE TABLE address (
    name	TEXT,
    email	TEXT,
    notes	TEXT,
    PRIMARY KEY (name, email)
  );
  INSERT INTO address VALUES('°¤Éô¹¯°ì', 'kouichi@mysticwall.com', '¸Ä¿ÍÍÑ');
  INSERT INTO address VALUES('°¤Éô¹¯°ì', 'kouichi@magickworx.com', '»Å»öÍÑ');
  COMMIT;
 */

#define	DATABASE_NAME	"/tmp/address.db"
#define	SQL_STATEMENT	"SELECT * FROM address;"

static void	show(CGI *);

static void
show(cgi)
	register CGI *	cgi;
{
  HTML *	html;

  cgi->header("text/html");

  html = newHTML401(HTML4);
  if (html) {
    html->html.attr.lang = "ja";
    html->head.begin();
    html->title("Address List");
    html->head.end();
    html->body.begin();
    html->H1("All Data");

    if (cgi->database->open(DATABASE_NAME) == 0) {
      if (cgi->database->query(SQL_STATEMENT) == 0) {
	register int	n;
	const char **	val;

	html->table.attr.border = 1;
	html->table.begin();
	while ((n = cgi->database->fetch(&val)) > 0) {
	  register int	i;

	  html->tr.begin();
	  for (i = 0; i < n; i++) {
	    html->td.begin();
	    if (val[i] != NULL) {
	      html->printf("%s", val[i]);
	    }
	    html->td.end();
	  }
	  html->tr.end();
	}
	html->table.end();
      }
      cgi->database->close();
    }
    html->body.end();
    html->html.end();
    html->done();
  }
}

int
main(argc, argv)
	int	argc;
	char	**argv;
{
  CGI *	cgi;

  cgi = newCGI(CC_MODULE_SQLITE3);
  if (cgi == NULL) {
    fprintf(stderr, "Error: %d\n", cgi_errno);
    return -1;
  }
  show(cgi);
  cgi->done();

  return 0;
}
