Add working tview, add working load ond Tables, remove giu

This commit is contained in:
Pablu
2025-12-01 15:00:58 +01:00
parent 027aad1374
commit 6182129022
11 changed files with 383 additions and 172 deletions

View File

@@ -39,7 +39,7 @@ func (p *Parser) Parse() (Statement, error) {
return nil, p.unexpectedToken(IDENT, IF)
} else if tok == IF && !p.expectSequence(NOT, EXISTS, IDENT) {
return nil, p.unexpectedToken()
}
}
_, _, lit := p.rescan()
stmt := CreateTableStatement{
@@ -89,6 +89,38 @@ func (p *Parser) Parse() (Statement, error) {
stmt.Columns[column].Extra = append(stmt.Columns[column].Extra, ref)
case PRIMARY:
if !p.expectSequence(KEY, LPAREN, IDENT) {
return nil, p.unexpectedToken()
}
primaryKeyNames := make([]string, 0)
_, _, columnName := p.rescan()
primaryKeyNames = append(primaryKeyNames, columnName)
for {
tok, ok := p.expectOne(RPAREN, COMMA)
if !ok {
return nil, p.unexpectedToken()
}
if tok == RPAREN {
break
}
if !p.expectNext(IDENT) {
return nil, p.unexpectedToken()
}
_, _, columnName := p.rescan()
primaryKeyNames = append(primaryKeyNames, columnName)
}
for _, pkName := range primaryKeyNames {
column := slices.IndexFunc(stmt.Columns, func(c Column) bool {
return c.Name == pkName
})
stmt.Columns[column].Extra = append(stmt.Columns[column].Extra, "PRIMARY_KEY")
}
case COMMA:
continue
@@ -102,8 +134,8 @@ func (p *Parser) parseColumn() (Column, error) {
_, _, lit := p.rescan()
column := Column{Name: lit, Extra: make([]string, 0)}
if _, ok := p.expectOne(TEXT, INTEGER); !ok {
return Column{}, p.unexpectedToken(TEXT, INTEGER)
if _, ok := p.expectOne(TEXT, INTEGER, REAL, BLOB); !ok {
return Column{}, p.unexpectedToken(TEXT, INTEGER, REAL, BLOB)
}
_, _, column.Type = p.rescan()