Skip to content

MaxMorais/Code2Case

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

Code2Case

Web2py Plugin for easy conversion of slow virtual columns for agile columns case This plugin uses the standard module dis, allowing disassembly of python code and building columns in sql case

[pt-Br] Web2Py Plugin para fácil conversão de colunas virtuais lentas para colunas sql case ágeis Este plugin usa o módulo padrão dis, que permite a desmontagem (disassembly) do código python e a construção de colunas case em sql

Eg. (Ex):

def main():
  from case import Case
  def myfunc():
    if db.mytable.myfield == 0:
      return 'A'
    elif db.mytable.myfield == 1:
      return 'B'
    else:
      return 'C'

print(db()._select(db.mytable.ALL, Case(myfunc))
SELECT CASE WHEN (mytable.myfield = 0) THEN 'A' ELSE CASE WHEN (mytable.myfield == 1) THEN 'B' ELSE 'C' END END AS myfunc FROM mytable
  def myfunc1():
    if db.mytable.myfield == 0:
      if db.mytable.myfield1 == 'a':
        return 1
      return 0
    return False
  myCol = Case(myfunc1)
  myCol << "other_name"

  print db()._select(db.mytable.ALL, myCol)
SELECT CASE WHEN (mytable.myfield = 0) THEN CASE WHEN (mytable.myfield1 == 1) THEN 1 ELSE 0 END ELSE 'F' END AS other_name FROM mytable
def myfunc3():
  if db.mytable.myfield >= 5 or db.mytable.field < 2 :
    if db.mytable.myfiedl1 == 0 and db.mytable.myfield2 == 1:
      return 2
    return 3
  return 1
SELECT CASE WHEN ((mytable.myfield >= 5) OR (mytable.myfield < 2)) THEN CASE WHEN ((mytable.myfield1 == 0) AND (mytable.myfield2 == 1) THEN 2 ELSE 3 END ELSE 1 END AS myfunc3 FROM mytable

About

Web2Py Puglin to easy convert slowest VirtualFields to agile case columns

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages