lxd/db/schema/schema.go
func (s *Schema) Dump(db *sql.DB) (string, error) {
	var statements []string
	err := query.Transaction(db, func(tx *sql.Tx) error {
		err := checkAllUpdatesAreApplied(tx, s.updates)
		if err != nil {
			return err
		}
		statements, err = selectTablesSQL(tx)
		return err
	})
	if err != nil {
		return "", err
	}
	for i, statement := range statements {
		statements[i] = formatSQL(statement)
	}

	// Add a statement for inserting the current schema version row.
	statements = append(
		statements,
		fmt.Sprintf(`
INSERT INTO schema (version, updated_at) VALUES (%d, strftime("%%s"))
`, len(s.updates)))
	return strings.Join(statements, ";\n"), nil
}
func (s *Schema) Dump(db *sql.DB) (string, error) {
	var statements []string
	err := query.Transaction(db, func(tx *sql.Tx) error {
		err := checkAllUpdatesAreApplied(tx, s.updates)
		if err != nil {
			return err
		}
		statements, err = selectTablesSQL(tx)
		return err
	})
	if err != nil {
		return "", err
	}
	for i, statement := range statements {
		statements[i] = formatSQL(statement)
	}

	// Add a statement for inserting the current schema version row.
	statements = append(
		statements,
		fmt.Sprintf(`
INSERT INTO schema (version, updated_at) VALUES (%d, strftime("%%s"))
`, len(s.updates)))
	return strings.Join(statements, ";\n"), nil
}
func ( s * Schema ) Dump ( db * sql . DB ) ( string , error ) { var statements [ ] string err := query . Transaction ( db , func ( tx * sql . Tx ) error { err := checkAllUpdatesAreApplied ( tx , s . updates ) if err != nil { return err } statements , err = selectTablesSQL ( tx ) return err } ) if err != nil { return " " , err } for i , statement := range statements { statements [ i ] = formatSQL ( statement ) } // Add a statement for inserting the current schema version row. statements = append ( statements , fmt . Sprintf ( `
INSERT INTO schema (version, updated_at) VALUES (%d, strftime("%%s"))
` , len ( s . updates ) ) ) return strings . Join ( statements , " \n " ) , nil }
// Dump returns a text of SQL commands that can be used to create this schema
// from scratch in one go, without going thorugh individual patches
// (essentially flattening them).
//
// It requires that all patches in this schema have been applied, otherwise an
// error will be returned.
Dump returns a text of SQL commands that can be used to create this schema from scratch in one go without going thorugh individual patches ( essentially flattening them ) . It requires that all patches in this schema have been applied otherwise an error will be returned .