Re: Euphoria MVC updates

new topic     » goto parent     » topic index » view thread      » older message » newer message

I'm using Win10 but no Powershell. I dit not understand how to use the batch script with lighttpd.

Here is the failing example. Its provides and empty debug.log.

#!/usr/local/euphoria-4.1.0-Linux-x64/bin/eui 
 
include std/map.e 
include std/filesys.e  -- for canonical_path()  
include std/search.e   -- for search:begins()  
include std/text.e     -- for dequote 
include std/io.e       -- for STDOUT 
include std/pretty.e 
include mvc/app.e 
include mvc/server.e 
include mvc/template.e 
include mvc/logger.e 
include mvc/database.e 
include mvc/db_sqlite3.e 
 
public function list_users() 
  atom conn = db_connect( "sqlite3:test.sqlite" ) 
  atom result = db_query( "SELECT * FROM users ORDER BY login" ) 
  object row = {} 
  sequence user_list = {} 
  while sequence( row ) do 
    row = db_fetch( result ) 
    if sequence( row ) then 
      sequence user = { 
        { "id", row[1] }, 
        { "login", row[2] }, 
        { "password", row[3] } 
      } 
      log_info( "user: %s", {pretty_sprint(user, {2})} ) 
      user_list &= { map:new_from_kvpairs(user) } 
    end if 
  end while 
 
  db_free( result ) 
  db_disconnect() 
  return user_list 
end function 
 
public function insert_user(sequence login, sequence password) 
  log_info( "Inserting user %s", {login} ) 
  atom conn = db_connect( "sqlite3:test.sqlite" ) 
  atom result = db_query( sprintf("INSERT INTO users(login, password) VALUES ('%s','%s')", {login, password}) ) 
  integer nb = db_affected_rows() 
  db_disconnect() 
  return nb 
end function 
 
public function delete_user(sequence id) 
  log_info( "Deleting user %s", {id} ) 
  atom conn = db_connect( "sqlite3:test.sqlite" ) 
  atom result = db_query( sprintf("DELETE FROM users WHERE id=%s", {id}) ) 
  integer nb = db_affected_rows() 
  db_disconnect() 
  return nb 
end function 
 
public function check_user(sequence login, sequence password) 
  log_info( "Checking user %s", {login} ) 
  atom conn = db_connect( "sqlite3:test.sqlite" ) 
  atom result = db_query( sprintf("SELECT id FROM users WHERE login = '%s' and password = '%s'", {login, password}) ) 
  sequence user_list = {} 
  sequence row = db_fetch(result) 
  for i = 1 to length(row) do 
      sequence user = { 
        { "id", row[i] } 
      } 
      log_info( "user: %s", {pretty_sprint(user, {2})} ) 
      user_list &= { map:new_from_kvpairs(user) } 
  end for 
 
  db_free( result ) 
  db_disconnect() 
  return length(user_list) 
end function 
 
set_template_path( "../templates" ) 
 
function static( object request )  
  sequence path_info = map:get( request, "PATH_INFO" )  
  log_info( "path_info = %s", {path_info} ) 
  
  sequence local_file = canonical_path( "." & path_info )  
  log_info( "local_file = %s", {local_file} ) 
 
  if search:begins( current_dir(), local_file ) then  
    return send_file( local_file )  
  
  end if  
  
  return response_code( 404 )  
end function  
app:route( "/static/.+", "static" )  
 
function login( object request ) 
  sequence method = map:get(request, "REQUEST_METHOD", "") 
  object response = map:new() 
  sequence login = "", password = "",  err = "" 
   
  if equal(method, "POST") then 
    login = map:get(request, "login", "") 
    password = map:get(request, "password", "") 
    integer count = check_user(login, password) 
    if count = 1 then 
      map:put( response, "user", login ) 
      return render_template( "main.html", response ) 
    else 
      err = "Your Login Name or Password is invalid" 
    end if 
  end if 
 
  map:put( response, "user", login ) 
  map:put( response, "error", err ) 
  return render_template( "login.html", response ) 
end function 
app:route( "/", "login", {"GET","POST"} ) 
 
function ins( object request ) 
  object response = map:new() 
   
  map:put( response, "user", "test" ) 
  return render_template( "insert.html", response ) 
end function 
app:route( "/insert", "ins" ) 
 
function users( object request ) 
  log_info( "query = %s", {map:get(request, "QUERY_STRING", "")} ) 
  sequence method = map:get(request, "REQUEST_METHOD", "") 
  sequence err = "" 
  if equal(method, "POST") and map:has(request, "save") then 
    sequence login = map:get(request, "login", "") 
    sequence password = map:get(request, "password", "") 
    insert_user(login, password) 
  elsif  equal(method, "GET") and map:has(request, "del") then 
    sequence id = map:get( request, "del", "" ) 
    log_info( "id = %s", {id} ) 
    if length(id) then 
      delete_user(id) 
    else 
      err = "User ID not found" 
    end if 
  end if 
 
  object response = map:new() 
  sequence user_list = list_users() 
  map:put( response, "user", "test" ) 
  map:put( response, "user_list", user_list ) 
  map:put( response, "error", err ) 
  return render_template( "users.html", response ) 
end function 
app:route( "/users", "users", {"GET","POST"} ) 
 
set_log_output({ STDOUT, "!debug.log" }) -- overwrite debug.log each time  
set_log_level( LOG_DEBUG ) 
server:start("0.0.0.0", 8080) 

It may be related to the use of a DLL. When Euphoria crashes whle using a DLL, it usually behaves so (no trace).

Jean-Marc

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu